⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parse_xrpc.c

📁 Find info about xrpc blocks in Sigma firmware.
💻 C
字号:
/* (c) Petter Wahlman, aka BadEIP */#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <libgen.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#define s8  char#define u8  unsigned char#define s32 int#define u32 unsigned int#define XRPC_CALLERID_IGNORED 0struct xrpc_block_header {   u32 callerid;              // 0x00   u32 xrpcid;                // 0x04   u32 param0;                // 0x08   u32 param1;                // 0x0c   u32 param2;                // 0x10   u32 param3;                // 0x14   u32 param4;                // 0x18   u32 headerandblocksize;    // 0x1c};s8 *caller[] = {   "XRPC_ID_GETSERIAL",       // 0     return chip serial number to param0..3   NULL,                      // 1        "XRPC_ID_GETRANDOM",       // 2     return 32bit of true random to param0   "XRPC_ID_BONDINGCOMMENT",  // 3     return the bonding comment to param0..1   "XRPC_ID_SHA1XOS",         // 4     outputs SHA-1 of burnt signablearea-xosMxy.bin to param0..4   "XRPC_ID_XLOAD",           // 5        NULL,                      // 6   NULL,                      // 7   NULL,                      // 8   NULL,                      // 9   NULL,                      // 10   NULL,                      // 11   NULL,                      // 12   NULL,                      // 13   NULL,                      // 14   "XRPC_ID_XLOAD",           // 15    deprecated in xosMa0   NULL,                      // 16      "XRPC_ID_XUNLOAD",         // 17    not implemented in release build   "XRPC_ID_CACHEDUMP",       // 18    bind/unbind certificate to xload.   "XRPC_ID_REBOOT",          // 19    !!   "XRPC_ID_XBIND",           // 20    signal or stop xtask   "XRPC_ID_XSTART",          // 21    start xtask   "XRPC_ID_XKILL",           // 22    stop an xtask   "XRPC_ID_GETPROTECTION",   // 23    get protection registers   "XRPC_ID_GETBINDING",      // 24    get binding hash   "XRPC_ID_GETOWNER",        // 25    get sector ownership hash   "XRPC_ID_SETENHANCEDMODE", // 26    enhanced mode   "XRPC_ID_VERSION"          // 27    get XOS build version string (!= sha1)};   int main(int argc, char **argv){   s32 fd, i;   s8 *target;   struct stat st;   struct xrpc_block_header xbh;   if (argc < 2) {      fprintf(stderr, "usage: xrpcinfo <filename>\n");      return 1;   }   for (i = 1; i < argc; i++) {      target = argv[i];      fd = open(target, O_RDONLY);      if (-1 == fd) {         perror(target);         return 1;      }      fstat(fd, &st);      read(fd, &xbh, sizeof(xbh));      if (st.st_size != xbh.headerandblocksize) {         fprintf(stderr, "error, \"%s\" does not look like a valid xrpc file\n", target);      } else {         printf("\nfile: \"%s\"\n", basename(target));         printf("callerid: 0x%08x (%s)\n", xbh.xrpcid, !xbh.xrpcid ? "XRPC_CALLERID_IGNORED" : "deprecated");         printf("xrpcid:   0x%08x (%s)\n", xbh.xrpcid, caller[xbh.xrpcid]);         printf("param0:   0x%08x\n", xbh.param0);         printf("param1:   0x%08x\n", xbh.param1);         printf("param2:   0x%08x\n", xbh.param2);         printf("param3:   0x%08x\n", xbh.param3);         printf("param4:   0x%08x\n", xbh.param4);         printf("size:     0x%08x\n", xbh.headerandblocksize);      }      close(fd);   }   return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -