This commit is contained in:
iceman1001 2024-01-23 15:28:50 +01:00
parent 61a2a58a37
commit 081ff216eb
12 changed files with 123 additions and 110 deletions

View file

@ -2395,7 +2395,7 @@ static void PacketReceived(PacketCommandNG *packet) {
base = NULL;
// Boundary check against end of addressable space.
if (offset > 0)
count=MIN(count, -offset);
count = MIN(count, -offset);
}
if (isok) {

View file

@ -328,24 +328,24 @@ uint32_t flash_size_from_cidr(uint32_t cidr) {
case 0:
return 0;
case 1:
return 8*1024;
return 8 * 1024;
case 2:
return 16*1024;
return 16 * 1024;
case 3:
return 32*1024;
return 32 * 1024;
case 5:
return 64*1024;
return 64 * 1024;
case 7:
return 128*1024;
return 128 * 1024;
case 9:
return 256*1024;
return 256 * 1024;
case 10:
return 512*1024;
return 512 * 1024;
case 12:
return 1024*1024;
return 1024 * 1024;
case 14:
default: // for 'reserved' values, guess 2MB
return 2048*1024;
return 2048 * 1024;
}
}

View file

@ -95,24 +95,24 @@ static uint32_t flash_size_from_cidr(uint32_t cidr) {
case 0:
return 0;
case 1:
return 8*1024;
return 8 * 1024;
case 2:
return 16*1024;
return 16 * 1024;
case 3:
return 32*1024;
return 32 * 1024;
case 5:
return 64*1024;
return 64 * 1024;
case 7:
return 128*1024;
return 128 * 1024;
case 9:
return 256*1024;
return 256 * 1024;
case 10:
return 512*1024;
return 512 * 1024;
case 12:
return 1024*1024;
return 1024 * 1024;
case 14:
default: // for 'reserved' values, guess 2MB
return 2048*1024;
return 2048 * 1024;
}
}
@ -188,7 +188,7 @@ static void UsbPacketReceived(uint8_t *packet) {
base = NULL;
// Boundary check against end of addressable space.
if (offset > 0)
count=MIN(count, -offset);
count = MIN(count, -offset);
}
if (isok) {

View file

@ -3690,7 +3690,7 @@ static int CmdCryptography(const char *Cmd) {
return PM3_EINVARG;
}
} else {
if (datilen % 16 != 0 && ((type & 0x2) >>1==0)) {
if (datilen % 16 != 0 && ((type & 0x2) >> 1 == 0)) {
PrintAndLogEx(ERR, "<data> length must be a multiple of 16. Got %d", datilen);
return PM3_EINVARG;
}

View file

@ -793,24 +793,24 @@ static void print_sr_blocks(uint8_t *data, size_t len, const uint8_t *uid, bool
if (in_repeated_block == false) {
PrintAndLogEx(INFO,
"%3d/0x%02X | %s| %s | %s",
i,
i,
sprint_hex(data + (i * ST25TB_SR_BLOCK_SIZE), ST25TB_SR_BLOCK_SIZE),
get_st_lock_info(chipid, systemblock, i),
sprint_ascii(data + (i * ST25TB_SR_BLOCK_SIZE), ST25TB_SR_BLOCK_SIZE)
);
"%3d/0x%02X | %s| %s | %s",
i,
i,
sprint_hex(data + (i * ST25TB_SR_BLOCK_SIZE), ST25TB_SR_BLOCK_SIZE),
get_st_lock_info(chipid, systemblock, i),
sprint_ascii(data + (i * ST25TB_SR_BLOCK_SIZE), ST25TB_SR_BLOCK_SIZE)
);
}
}
PrintAndLogEx(INFO,
"%3d/0x%02X | %s| %s | %s",
0xFF,
0xFF,
sprint_hex(systemblock, ST25TB_SR_BLOCK_SIZE),
get_st_lock_info(chipid, systemblock, 0xFF),
sprint_ascii(systemblock, ST25TB_SR_BLOCK_SIZE)
);
"%3d/0x%02X | %s| %s | %s",
0xFF,
0xFF,
sprint_hex(systemblock, ST25TB_SR_BLOCK_SIZE),
get_st_lock_info(chipid, systemblock, 0xFF),
sprint_ascii(systemblock, ST25TB_SR_BLOCK_SIZE)
);
print_footer();
}

View file

@ -2065,7 +2065,7 @@ static int CmdHF14AMfUInfo(const char *Cmd) {
if (len > -1) {
has_auth_key = true;
ak_len = 4;
memcpy(authenticationkey, key, 4);
memcpy(authenticationkey, key, 4);
PrintAndLogEx(SUCCESS, "Found password... " _GREEN_("%s") " pack... " _GREEN_("%02X%02X"), sprint_hex_inrow(key, 4), pack[0], pack[1]);
goto out;
}
@ -2080,7 +2080,7 @@ static int CmdHF14AMfUInfo(const char *Cmd) {
if (len > -1) {
has_auth_key = true;
ak_len = 4;
memcpy(authenticationkey, key, 4);
memcpy(authenticationkey, key, 4);
PrintAndLogEx(SUCCESS, "Found password... " _GREEN_("%s") " pack... " _GREEN_("%02X%02X"), sprint_hex_inrow(key, 4), pack[0], pack[1]);
goto out;
}
@ -2095,7 +2095,7 @@ static int CmdHF14AMfUInfo(const char *Cmd) {
if (len > -1) {
has_auth_key = true;
ak_len = 4;
memcpy(authenticationkey, key, 4);
memcpy(authenticationkey, key, 4);
PrintAndLogEx(SUCCESS, "Found password... " _GREEN_("%s") " pack... " _GREEN_("%02X%02X"), sprint_hex_inrow(key, 4), pack[0], pack[1]);
goto out;
}
@ -2110,7 +2110,7 @@ static int CmdHF14AMfUInfo(const char *Cmd) {
if (len > -1) {
has_auth_key = true;
ak_len = 4;
memcpy(authenticationkey, key, 4);
memcpy(authenticationkey, key, 4);
PrintAndLogEx(SUCCESS, "Found password... " _GREEN_("%s") " pack... " _GREEN_("%02X%02X"), sprint_hex_inrow(key, 4), pack[0], pack[1]);
break;
} else {
@ -2566,12 +2566,12 @@ void printMFUdumpEx(mfu_dump_t *card, uint16_t pages, uint8_t startpage, bool de
if (in_repeated_block == false) {
PrintAndLogEx(INFO, "%3d/0x%02X | %s| %s | %s"
, i + startpage
, i + startpage
, sprint_hex(data + i * 4, 4)
, (lckbit) ? _RED_("1") : "0"
, sprint_ascii(data + i * 4, 4)
);
, i + startpage
, i + startpage
, sprint_hex(data + i * 4, 4)
, (lckbit) ? _RED_("1") : "0"
, sprint_ascii(data + i * 4, 4)
);
}
}
PrintAndLogEx(INFO, "---------------------------------");
@ -3010,7 +3010,7 @@ static int CmdHF14AMfURestore(const char *Cmd) {
arg_lit0("e", NULL, "enable special write version/signature -MAGIC NTAG 21* ONLY-"),
arg_lit0("r", NULL, "use password found in dumpfile to configure tag. Requires " _YELLOW_("'-e'") " parameter to work"),
arg_lit0("v", "verbose", "verbose output"),
arg_lit0("z", "dense", "dense dump output style"),
arg_lit0("z", "dense", "dense dump output style"),
arg_param_end
};
CLIExecWithReturn(ctx, Cmd, argtable, false);
@ -4797,7 +4797,7 @@ static int CmdHF14AMfuView(const char *Cmd) {
arg_param_begin,
arg_str1("f", "file", "<fn>", "Specify a filename for dump file"),
arg_lit0("v", "verbose", "Verbose output"),
arg_lit0("z", "dense", "dense dump output style"),
arg_lit0("z", "dense", "dense dump output style"),
arg_param_end
};
CLIExecWithReturn(ctx, Cmd, argtable, false);

View file

@ -466,26 +466,26 @@ static void xerox_print(uint8_t *data, uint16_t datalen, bool dense_output) {
(memcmp(blk, blk - XEROX_BLOCK_SIZE, XEROX_BLOCK_SIZE) == 0) &&
(memcmp(blk, blk + XEROX_BLOCK_SIZE, XEROX_BLOCK_SIZE) == 0) &&
(memcmp(blk, blk + (XEROX_BLOCK_SIZE * 2), XEROX_BLOCK_SIZE) == 0)
) {
) {
// we're in a user block that isn't the first user block nor last two user blocks,
// and the current block data is the same as the previous and next two block
in_repeated_block = true;
PrintAndLogEx(INFO, " ......");
} else if (in_repeated_block &&
(memcmp(blk, blk + XEROX_BLOCK_SIZE, XEROX_BLOCK_SIZE) || i == blockno)
) {
(memcmp(blk, blk + XEROX_BLOCK_SIZE, XEROX_BLOCK_SIZE) || i == blockno)
) {
// in a repeating block, but the next block doesn't match anymore, or we're at the end block
in_repeated_block = false;
}
if (in_repeated_block == false) {
PrintAndLogEx(INFO,
"%3d/0x%02X | %s | %s",
i,
i,
sprint_hex(data + (i * XEROX_BLOCK_SIZE), XEROX_BLOCK_SIZE),
sprint_ascii(data + (i * XEROX_BLOCK_SIZE), XEROX_BLOCK_SIZE)
);
"%3d/0x%02X | %s | %s",
i,
i,
sprint_hex(data + (i * XEROX_BLOCK_SIZE), XEROX_BLOCK_SIZE),
sprint_ascii(data + (i * XEROX_BLOCK_SIZE), XEROX_BLOCK_SIZE)
);
}
}
}
@ -503,7 +503,7 @@ typedef struct {
//Toner related details
const char *color; // cyan, magenta, gold, silver, clear, white, fluo
const char *region; // DMO, WW, NA/ESG (NA - North America, MNA - Metred North America, DMO - Developing Markets, XE - Europe
const char *ms; // sold, metered
@ -560,7 +560,7 @@ static const xerox_part_t xerox_part_mappings[] = {
static const xerox_part_t *get_xerox_part_info(const char *pn) {
for (int i = 0; i < ARRAYLEN(xerox_part_mappings); i++) {
// Todo: make str_startswith, accept additional "Maximum number of characters to compare"
if(strncmp(pn, xerox_part_mappings[i].partnumber, strlen(pn)-3) == 0){
if (strncmp(pn, xerox_part_mappings[i].partnumber, strlen(pn) - 3) == 0) {
return &xerox_part_mappings[i];
}
}
@ -605,20 +605,20 @@ static void xerox_print_info(uint8_t *d) {
PrintAndLogEx(SUCCESS, " PartNo....... " _YELLOW_("%s"), pn);
PrintAndLogEx(SUCCESS, " Date......... %02d.%02d.%02d", d[8], d[9], d[10]);
PrintAndLogEx(SUCCESS, " Serial....... %d", (d[14] << 16) | (d[13] << 8) | d[12]);
PrintAndLogEx(SUCCESS, " Type......... %s", (d[18] <= 4) ? xerox_c_type[d[18]] : "Unknown");
PrintAndLogEx(SUCCESS, " Type......... %s", (d[18] <= 4) ? xerox_c_type[d[18]] : "Unknown");
const xerox_part_t *item = get_xerox_part_info(pn);
if (strlen(item->partnumber) > 0) {
if(strcmp(xerox_c_type[d[18]], "drum") == 0) {
if (strcmp(xerox_c_type[d[18]], "drum") == 0) {
PrintAndLogEx(SUCCESS, " Consumable... drum");
PrintAndLogEx(SUCCESS, " Slots........ %s", item->r); // Interchangeability
} else {
PrintAndLogEx(SUCCESS, " Consumable... toner");
PrintAndLogEx(SUCCESS, " Region....... %s", item->region);
PrintAndLogEx(SUCCESS, " Region....... %s", item->region);
PrintAndLogEx(SUCCESS, " M/s.......... %s", item->ms);
}
}
}
}
@ -778,7 +778,7 @@ static int CmdHFXeroxDump(const char *Cmd) {
arg_lit0("d", "decrypt", "decrypt secret blocks"),
arg_lit0(NULL, "ns", "no save to file"),
arg_lit0("v", "verbose", "verbose output"),
arg_lit0("z", "dense", "dense dump output style"),
arg_lit0("z", "dense", "dense dump output style"),
arg_param_end
};
CLIExecWithReturn(ctx, Cmd, argtable, true);

View file

@ -656,7 +656,7 @@ static int CmdReadmem(const char *Cmd) {
bool save_to_file = fnlen > 0;
// default len to 512KB when saving to file, to 32 bytes when viewing on the console.
uint32_t default_len = save_to_file ? 512*1024 : 32;
uint32_t default_len = save_to_file ? 512 * 1024 : 32;
uint32_t address = arg_get_u32_def(ctx, 1, 0);
uint32_t len = arg_get_u32_def(ctx, 2, default_len);
@ -672,7 +672,7 @@ static int CmdReadmem(const char *Cmd) {
const char *flash_str = raw ? "" : " flash";
PrintAndLogEx(INFO, "reading "_YELLOW_("%u")" bytes from processor%s memory",
len, flash_str);
len, flash_str);
DeviceMemType_t type = raw ? MCU_MEM : MCU_FLASH;
if (!GetFromDevice(type, buffer, len, address, NULL, 0, NULL, -1, true)) {

View file

@ -2203,9 +2203,9 @@ mfu_df_e detect_mfu_dump_format(uint8_t **dump, bool verbose) {
retval = MFU_DF_NEWBIN;
}
// Memory layout is different for NTAG I2C 1K/2K plus
// Memory layout is different for NTAG I2C 1K/2K plus
// Sak 00, atqa 44 00
if (0 == new->data[7] && 0x44 == new->data[8] && 0x00 == new->data[9] ) {
if (0 == new->data[7] && 0x44 == new->data[8] && 0x00 == new->data[9]) {
retval = MFU_DF_NEWBIN;
}

View file

@ -109,6 +109,7 @@ const static vocabulary_t vocabulary[] = {
{ 0, "data bitsamples" },
{ 1, "data bmap" },
{ 1, "data clear" },
{ 1, "data crypto" },
{ 1, "data diff" },
{ 0, "data hexsamples" },
{ 1, "data hex2bin" },

View file

@ -724,16 +724,15 @@ static int dumpmem_pm3(char *serial_port_name, const char *filename, uint32_t ad
if (in_bootloader) {
if ((dev_info & DEVICE_INFO_FLAG_UNDERSTANDS_READ_MEM) != 0) {
PrintAndLogEx(INFO, "Device is running the bootloader.");
}
else {
} else {
PrintAndLogEx(ERR, "Device is running the bootloader, but the bootloader"
" doesn't understand the READ MEM command.");
" doesn't understand the READ MEM command.");
goto finish2;
}
}
PrintAndLogEx(SUCCESS,"Dump requested from address "_YELLOW_("%u")", length "_YELLOW_("%u")"%s.",
addr, len, raw ? ", in raw address mode" : "");
PrintAndLogEx(SUCCESS, "Dump requested from address "_YELLOW_("%u")", length "_YELLOW_("%u")"%s.",
addr, len, raw ? ", in raw address mode" : "");
PrintAndLogEx(SUCCESS, _CYAN_("Memory dumping to file..."));
ret = dumpmem_to_file(filename, addr, len, raw, in_bootloader);
@ -918,7 +917,7 @@ int main(int argc, char *argv[]) {
bool dumpmem_mode = false;
const char *dumpmem_filename = NULL;
uint32_t dumpmem_addr = 0;
uint32_t dumpmem_len = 512*1024;
uint32_t dumpmem_len = 512 * 1024;
bool dumpmem_raw = false;
// color management:

View file

@ -273,9 +273,21 @@
],
"usage": "data clear [-h]"
},
"data convertbitstream": {
"command": "data convertbitstream",
"description": "Convert GraphBuffer's 0|1 values to 127|-127",
"notes": [
"data convertbitstream"
],
"offline": true,
"options": [
"-h, --help This help"
],
"usage": "data convertbitstream [-h]"
},
"data crypto": {
"command": "data crypto",
"description": "Encrypt and decrypt data",
"description": "Encrypt data, right here, right now. Or decrypt.",
"notes": [
"Supply data, key, IV (needed for des MAC or aes), and cryptography action.",
"To calculate a MAC for FMCOS, supply challenge as IV, data as data, and session/line protection key as key.",
@ -294,18 +306,6 @@
],
"usage": "data crypto [-hr] -d <hex> -k <hex> [--des] [--mac] [--iv <hex>]"
},
"data convertbitstream": {
"command": "data convertbitstream",
"description": "Convert GraphBuffer's 0|1 values to 127|-127",
"notes": [
"data convertbitstream"
],
"offline": true,
"options": [
"-h, --help This help"
],
"usage": "data convertbitstream [-h]"
},
"data cthreshold": {
"command": "data cthreshold",
"description": "Inverse of dirty threshold command, all values between up and down will be average out",
@ -444,7 +444,7 @@
},
"data help": {
"command": "data help",
"description": "help This help ----------- ------------------------- Modulation------------------------- biphaserawdecode Biphase decode bin stream in DemodBuffer detectclock Detect ASK, FSK, NRZ, PSK clock rate of wave in GraphBuffer fsktonrz Convert fsk2 to nrz wave for alternate fsk demodulating (for weak fsk) manrawdecode Manchester decode binary stream in DemodBuffer modulation Identify LF signal for clock and modulation rawdemod Demodulate the data in the GraphBuffer and output binary ----------- ------------------------- Graph------------------------- askedgedetect Adjust Graph for manual ASK demod autocorr Autocorrelation over window dirthreshold Max rising higher up-thres/ Min falling lower down-thres decimate Decimate samples envelope Generate square envelope of samples undecimate Un-decimate samples hide Hide graph window hpf Remove DC offset from trace iir Apply IIR buttersworth filter on plot data grid overlay grid on graph window ltrim Trim samples from left of trace mtrim Trim out samples from the specified start to the specified stop norm Normalize max/min to +/-128 plot Show graph window cthreshold Average out all values between rtrim Trim samples from right of trace setgraphmarkers Set blue and orange marker in graph window shiftgraphzero Shift 0 for Graphed wave + or - shift value timescale Set cursor display timescale zerocrossings Count time between zero-crossings convertbitstream Convert GraphBuffer's 0/1 values to 127 / -127 getbitstream Convert GraphBuffer's >=1 values to 1 and <1 to 0 ----------- ------------------------- General------------------------- asn1 ASN1 decoder atr ATR lookup bin2hex Converts binary to hexadecimal bmap Convert hex value according a binary template clear Clears bigbuf on deviceside and graph window diff Diff of input files hex2bin Converts hexadecimal to binary load Load contents of file into graph window num Converts dec/hex/bin print Print the data in the DemodBuffer save Save signal trace data (from graph window) setdebugmode Set Debugging Level on client side --------------------------------------------------------------------------------------- data biphaserawdecode available offline: yes Biphase decode binary stream in DemodBuffer Converts 10 or 01 -> 1 and 11 or 00 -> 0 - must have binary sequence in DemodBuffer (run `data rawdemod --ar` before) - invert for Conditional Dephase Encoding (CDP) AKA Differential Manchester",
"description": "help This help ----------- ------------------------- Modulation------------------------- biphaserawdecode Biphase decode bin stream in DemodBuffer detectclock Detect ASK, FSK, NRZ, PSK clock rate of wave in GraphBuffer fsktonrz Convert fsk2 to nrz wave for alternate fsk demodulating (for weak fsk) manrawdecode Manchester decode binary stream in DemodBuffer modulation Identify LF signal for clock and modulation rawdemod Demodulate the data in the GraphBuffer and output binary ----------- ------------------------- Graph------------------------- askedgedetect Adjust Graph for manual ASK demod autocorr Autocorrelation over window dirthreshold Max rising higher up-thres/ Min falling lower down-thres decimate Decimate samples envelope Generate square envelope of samples undecimate Un-decimate samples hide Hide graph window hpf Remove DC offset from trace iir Apply IIR buttersworth filter on plot data grid overlay grid on graph window ltrim Trim samples from left of trace mtrim Trim out samples from the specified start to the specified stop norm Normalize max/min to +/-128 plot Show graph window cthreshold Average out all values between rtrim Trim samples from right of trace setgraphmarkers Set blue and orange marker in graph window shiftgraphzero Shift 0 for Graphed wave + or - shift value timescale Set cursor display timescale zerocrossings Count time between zero-crossings convertbitstream Convert GraphBuffer's 0/1 values to 127 / -127 getbitstream Convert GraphBuffer's >=1 values to 1 and <1 to 0 ----------- ------------------------- General------------------------- asn1 ASN1 decoder atr ATR lookup bin2hex Converts binary to hexadecimal bmap Convert hex value according a binary template clear Clears bigbuf on deviceside and graph window crypto Encrypt and decrypt data diff Diff of input files hex2bin Converts hexadecimal to binary load Load contents of file into graph window num Converts dec/hex/bin print Print the data in the DemodBuffer save Save signal trace data (from graph window) setdebugmode Set Debugging Level on client side --------------------------------------------------------------------------------------- data biphaserawdecode available offline: yes Biphase decode binary stream in DemodBuffer Converts 10 or 01 -> 1 and 11 or 00 -> 0 - must have binary sequence in DemodBuffer (run `data rawdemod --ar` before) - invert for Conditional Dephase Encoding (CDP) AKA Differential Manchester",
"notes": [
"data biphaserawdecode -> decode biphase bitstream from the DemodBuffer",
"data biphaserawdecode -oi -> decode biphase bitstream from the DemodBuffer, adjust offset, and invert output"
@ -1415,9 +1415,10 @@
"options": [
"-h, --help This help",
"-f, --file <fn> (optional) filename, if no <name> UID will be used as filename",
"--ns no save to file"
"--ns no save to file",
"-z, --dense dense dump output style"
],
"usage": "hf 14b dump [-h] [-f <fn>] [--ns]"
"usage": "hf 14b dump [-hz] [-f <fn>] [--ns]"
},
"hf 14b help": {
"command": "hf 14b help",
@ -1570,9 +1571,10 @@
"options": [
"-h, --help This help",
"-f, --file <fn> Specify a filename for dump file",
"-v, --verbose verbose output"
"-v, --verbose verbose output",
"-z, --dense dense dump output style"
],
"usage": "hf 14b view [-hv] -f <fn>"
"usage": "hf 14b view [-hvz] -f <fn>"
},
"hf 14b wrbl": {
"command": "hf 14b wrbl",
@ -6703,9 +6705,10 @@
"-l Swap entered key's endianness",
"-p, --page <dec> Manually set start page number to start from",
"-q, --qty <dec> Manually set number of pages to dump",
"--ns no save to file"
"--ns no save to file",
"-z, --dense dense dump output style"
],
"usage": "hf mfu dump [-hl] [-f <fn>] [-k <hex>] [-p <dec>] [-q <dec>] [--ns]"
"usage": "hf mfu dump [-hlz] [-f <fn>] [-k <hex>] [-p <dec>] [-q <dec>] [--ns]"
},
"hf mfu eload": {
"command": "hf mfu eload",
@ -6749,9 +6752,10 @@
"offline": false,
"options": [
"-h, --help This help",
"-e, --end <dec> index of last block"
"-e, --end <dec> index of last block",
"-z, --dense dense dump output style"
],
"usage": "hf mfu eview [-h] [-e <dec>]"
"usage": "hf mfu eview [-hz] [-e <dec>]"
},
"hf mfu help": {
"command": "hf mfu help",
@ -6897,9 +6901,10 @@
"-s enable special write UID -MAGIC TAG ONLY-",
"-e enable special write version/signature -MAGIC NTAG 21* ONLY-",
"-r use password found in dumpfile to configure tag. Requires '-e' parameter to work",
"-v, --verbose verbose output"
"-v, --verbose verbose output",
"-z, --dense dense dump output style"
],
"usage": "hf mfu restore [-hlserv] -f <fn> [-k <hex>]"
"usage": "hf mfu restore [-hlservz] -f <fn> [-k <hex>]"
},
"hf mfu setpwd": {
"command": "hf mfu setpwd",
@ -6974,9 +6979,10 @@
"options": [
"-h, --help This help",
"-f, --file <fn> Specify a filename for dump file",
"-v, --verbose Verbose output"
"-v, --verbose Verbose output",
"-z, --dense dense dump output style"
],
"usage": "hf mfu view [-hv] -f <fn>"
"usage": "hf mfu view [-hvz] -f <fn>"
},
"hf mfu wrbl": {
"command": "hf mfu wrbl",
@ -7650,9 +7656,10 @@
"-f, --file <fn> filename to save dump to",
"-d, --decrypt decrypt secret blocks",
"--ns no save to file",
"-v, --verbose verbose output"
"-v, --verbose verbose output",
"-z, --dense dense dump output style"
],
"usage": "hf xerox dump [-hdv] [-f <fn>] [--ns]"
"usage": "hf xerox dump [-hdvz] [-f <fn>] [--ns]"
},
"hf xerox help": {
"command": "hf xerox help",
@ -7713,9 +7720,10 @@
"options": [
"-h, --help This help",
"-f, --file <fn> Specify a filename for dump file",
"-v, --verbose verbose output"
"-v, --verbose verbose output",
"-z, --dense dense dump output style"
],
"usage": "hf xerox view [-hv] -f <fn>"
"usage": "hf xerox view [-hvz] -f <fn>"
},
"hints": {
"command": "hints",
@ -7857,16 +7865,21 @@
},
"hw readmem": {
"command": "hw readmem",
"description": "Read memory at decimal address from ARM chip flash.",
"description": "Reads processor flash memory into a file or views on console",
"notes": [
"hw readmem -a 10000"
"hw readmem -f myfile -> save 512KB processor flash memory to file",
"hw readmem -a 8192 -l 512 -> display 512 bytes from offset 8192"
],
"offline": false,
"options": [
"-h, --help This help",
"-a, --adr <dec> address to read"
"-a, --adr <dec> flash address to start reading from",
"-l, --len <dec> length (default 32 or 512KB)",
"-f, --file <fn> save to file",
"-c, --cols <dec> column breaks",
"-r, --raw use raw address mode: read from anywhere, not just flash"
],
"usage": "hw readmem [-h] -a <dec>"
"usage": "hw readmem [-hr] [-a <dec>] [-l <dec>] [-f <fn>] [-c <dec>]"
},
"hw reset": {
"command": "hw reset",
@ -12326,8 +12339,8 @@
}
},
"metadata": {
"commands_extracted": 710,
"commands_extracted": 711,
"extracted_by": "PM3Help2JSON v1.00",
"extracted_on": "2024-01-18T18:49:32"
"extracted_on": "2024-01-23T14:27:27"
}
}
}