fix typos and regenerate command list

This commit is contained in:
nvx 2024-11-02 23:33:20 +10:00
commit ef0cf93a5d
9 changed files with 85 additions and 56 deletions

View file

@ -1728,7 +1728,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac
- Added `lf t55xx recoverpw` - adds a new password recovery using bitflips and partial flips if password write went bad. (@alexgrin) - Added `lf t55xx recoverpw` - adds a new password recovery using bitflips and partial flips if password write went bad. (@alexgrin)
- `hf legic` - added improved legic data mapping. (jason) - `hf legic` - added improved legic data mapping. (jason)
- `hf mf mifare` - added possibility to target key A|B (@douniwan5788) - `hf mf mifare` - added possibility to target key A|B (@douniwan5788)
- Added `analyse lcr` - added a new main command group, to help analysing bytes & bits & nibbles. (@iceman1001) - Added `analyse lrc` - added a new main command group, to help analysing bytes & bits & nibbles. (@iceman1001)
- Added `lf nedap` - added identification of a NEDAP tag. (@iceman1001) - Added `lf nedap` - added identification of a NEDAP tag. (@iceman1001)
- `lf viking clone` - fixed a bug. (@iceman1001) - `lf viking clone` - fixed a bug. (@iceman1001)
- Added bitsliced bruteforce solver in `hf mf hardnested` (@Aczid) - Added bitsliced bruteforce solver in `hf mf hardnested` (@Aczid)

View file

@ -492,7 +492,7 @@ static void read_packet(packet_t *packet) {
if (packet->len == 0x50 && dataReceived >= sizeof(PacketResponseNGPreamble) && packet->dat[0] == 0x4D && packet->dat[1] == 0x33 && packet->dat[2] == 0x61) { if (packet->len == 0x50 && dataReceived >= sizeof(PacketResponseNGPreamble) && packet->dat[0] == 0x4D && packet->dat[1] == 0x33 && packet->dat[2] == 0x61) {
// PM3 NG packet magic // PM3 NG packet magic
DbpString(_CYAN_("[@]") " PM3 NG packet recieved - ignoring"); DbpString(_CYAN_("[@]") " PM3 NG packet received - ignoring");
// clear any remaining buffered data // clear any remaining buffered data
while (cardhopper_data_available()) { while (cardhopper_data_available()) {

View file

@ -4047,15 +4047,15 @@ void SimulateIso14443aTagAID(uint8_t tagType, uint16_t flags, uint8_t *data, uin
// aid len is found as a hex value in receivedCmd[6] (Index Starts at 0) // aid len is found as a hex value in receivedCmd[6] (Index Starts at 0)
int aid_len = receivedCmd[6]; int aid_len = receivedCmd[6];
uint8_t *recieved_aid = &receivedCmd[7]; uint8_t *received_aid = &receivedCmd[7];
// aid enumeration flag // aid enumeration flag
if (enumerate == true) { if (enumerate == true) {
Dbprintf("Received AID (%d):", aid_len); Dbprintf("Received AID (%d):", aid_len);
Dbhexdump(aid_len, recieved_aid, false); Dbhexdump(aid_len, received_aid, false);
} }
if (memcmp(aidFilter, recieved_aid, aid_len) == 0) { // Evaluate the AID sent by the Reader to the AID supplied if (memcmp(aidFilter, received_aid, aid_len) == 0) { // Evaluate the AID sent by the Reader to the AID supplied
// AID Response will be parsed here // AID Response will be parsed here
memcpy(dynamic_response_info.response + 2, aidResponse, respondLen + 2); memcpy(dynamic_response_info.response + 2, aidResponse, respondLen + 2);
dynamic_response_info.response_n = respondLen + 2; dynamic_response_info.response_n = respondLen + 2;

View file

@ -480,7 +480,7 @@ int mifare_ultra_aes_auth(uint8_t keyno, uint8_t *keybytes) {
mbedtls_aes_setkey_enc(&actx, key, 128); mbedtls_aes_setkey_enc(&actx, key, 128);
mbedtls_aes_crypt_cbc(&actx, MBEDTLS_AES_ENCRYPT, sizeof(enc_rnd_ab), IV, rnd_ab, enc_rnd_ab); mbedtls_aes_crypt_cbc(&actx, MBEDTLS_AES_ENCRYPT, sizeof(enc_rnd_ab), IV, rnd_ab, enc_rnd_ab);
// send & recieve // send & receive
len = mifare_sendcmd(MIFARE_ULAES_AUTH_2, enc_rnd_ab, sizeof(enc_rnd_ab), resp, sizeof(resp), respPar, NULL); len = mifare_sendcmd(MIFARE_ULAES_AUTH_2, enc_rnd_ab, sizeof(enc_rnd_ab), resp, sizeof(resp), respPar, NULL);
if (len != 19) { if (len != 19) {
if (g_dbglevel >= DBG_ERROR) Dbprintf("Cmd Error: %02x - expected 19 got " _RED_("%u"), resp[0], len); if (g_dbglevel >= DBG_ERROR) Dbprintf("Cmd Error: %02x - expected 19 got " _RED_("%u"), resp[0], len);

View file

@ -40,10 +40,10 @@
static int CmdHelp(const char *Cmd); static int CmdHelp(const char *Cmd);
static uint8_t calculateLRC(const uint8_t *d, uint8_t n) { static uint8_t calculateLRC(const uint8_t *d, uint8_t n) {
uint8_t lcr = 0; uint8_t lrc = 0;
for (uint8_t i = 0; i < n; i++) for (uint8_t i = 0; i < n; i++)
lcr ^= d[i]; lrc ^= d[i];
return lcr; return lrc;
} }
/* /*
static uint16_t matrixadd ( uint8_t* bytes, uint8_t len){ static uint16_t matrixadd ( uint8_t* bytes, uint8_t len){
@ -242,17 +242,17 @@ static int CmdAnalyseLfsr(const char *Cmd) {
return PM3_SUCCESS; return PM3_SUCCESS;
} }
static int CmdAnalyseLCR(const char *Cmd) { static int CmdAnalyseLRC(const char *Cmd) {
CLIParserContext *ctx; CLIParserContext *ctx;
CLIParserInit(&ctx, "analyse lcr", CLIParserInit(&ctx, "analyse lrc",
"Specifying the bytes of a UID with a known LRC will find the last byte value\n" "Specifying the bytes of a UID with a known LRC will find the last byte value\n"
"needed to generate that LRC with a rolling XOR. All bytes should be specified in HEX.", "needed to generate that LRC with a rolling XOR. All bytes should be specified in HEX.",
"analyse lcr -d 04008064BA -> Target (BA) requires final LRC XOR byte value: 5A" "analyse lrc -d 04008064BA -> Target (BA) requires final LRC XOR byte value: 5A"
); );
void *argtable[] = { void *argtable[] = {
arg_param_begin, arg_param_begin,
arg_str1("d", "data", "<hex>", "bytes to calc missing XOR in a LCR"), arg_str1("d", "data", "<hex>", "bytes to calc missing XOR in a LRC"),
arg_param_end arg_param_end
}; };
CLIExecWithReturn(ctx, Cmd, argtable, true); CLIExecWithReturn(ctx, Cmd, argtable, true);
@ -1171,7 +1171,7 @@ static int CmdAnalyseUnits(const char *Cmd) {
static command_t CommandTable[] = { static command_t CommandTable[] = {
{"help", CmdHelp, AlwaysAvailable, "This help"}, {"help", CmdHelp, AlwaysAvailable, "This help"},
{"lcr", CmdAnalyseLCR, AlwaysAvailable, "Generate final byte for XOR LRC"}, {"lrc", CmdAnalyseLRC, AlwaysAvailable, "Generate final byte for XOR LRC"},
{"crc", CmdAnalyseCRC, AlwaysAvailable, "Stub method for CRC evaluations"}, {"crc", CmdAnalyseCRC, AlwaysAvailable, "Stub method for CRC evaluations"},
{"chksum", CmdAnalyseCHKSUM, AlwaysAvailable, "Checksum with adding, masking and one's complement"}, {"chksum", CmdAnalyseCHKSUM, AlwaysAvailable, "Checksum with adding, masking and one's complement"},
{"dates", CmdAnalyseDates, AlwaysAvailable, "Look for datestamps in a given array of bytes"}, {"dates", CmdAnalyseDates, AlwaysAvailable, "Look for datestamps in a given array of bytes"},

View file

@ -63,7 +63,7 @@ const static vocabulary_t vocabulary[] = {
{ 1, "prefs set output" }, { 1, "prefs set output" },
{ 1, "prefs set plotsliders" }, { 1, "prefs set plotsliders" },
{ 1, "analyse help" }, { 1, "analyse help" },
{ 1, "analyse lcr" }, { 1, "analyse lrc" },
{ 1, "analyse crc" }, { 1, "analyse crc" },
{ 1, "analyse chksum" }, { 1, "analyse chksum" },
{ 1, "analyse dates" }, { 1, "analyse dates" },
@ -267,6 +267,7 @@ const static vocabulary_t vocabulary[] = {
{ 0, "hf gallagher delete" }, { 0, "hf gallagher delete" },
{ 1, "hf gallagher diversifykey" }, { 1, "hf gallagher diversifykey" },
{ 1, "hf gallagher decode" }, { 1, "hf gallagher decode" },
{ 1, "hf gallagher encode" },
{ 1, "hf iclass help" }, { 1, "hf iclass help" },
{ 1, "hf iclass list" }, { 1, "hf iclass list" },
{ 0, "hf iclass dump" }, { 0, "hf iclass dump" },

View file

@ -97,16 +97,16 @@
}, },
"analyse help": { "analyse help": {
"command": "analyse help", "command": "analyse help",
"description": "help This help lcr Generate final byte for XOR LRC crc Stub method for CRC evaluations chksum Checksum with adding, masking and one's complement dates Look for datestamps in a given array of bytes lfsr LFSR tests a num bits test nuid create NUID from 7byte UID demodbuff Load binary string to DemodBuffer freq Calc wave lengths foo muxer units convert ETU <> US <> SSP_CLK (3.39MHz) --------------------------------------------------------------------------------------- analyse lcr available offline: yes Specifying the bytes of a UID with a known LRC will find the last byte value needed to generate that LRC with a rolling XOR. All bytes should be specified in HEX.", "description": "help This help lrc Generate final byte for XOR LRC crc Stub method for CRC evaluations chksum Checksum with adding, masking and one's complement dates Look for datestamps in a given array of bytes lfsr LFSR tests a num bits test nuid create NUID from 7byte UID demodbuff Load binary string to DemodBuffer freq Calc wave lengths foo muxer units convert ETU <> US <> SSP_CLK (3.39MHz) --------------------------------------------------------------------------------------- analyse lrc available offline: yes Specifying the bytes of a UID with a known LRC will find the last byte value needed to generate that LRC with a rolling XOR. All bytes should be specified in HEX.",
"notes": [ "notes": [
"analyse lcr -d 04008064BA -> Target (BA) requires final LRC XOR byte value: 5A" "analyse lrc -d 04008064BA -> Target (BA) requires final LRC XOR byte value: 5A"
], ],
"offline": true, "offline": true,
"options": [ "options": [
"-h, --help This help", "-h, --help This help",
"-d, --data <hex> bytes to calc missing XOR in a LCR" "-d, --data <hex> bytes to calc missing XOR in a LRC"
], ],
"usage": "analyse lcr [-h] -d <hex>" "usage": "analyse lrc [-h] -d <hex>"
}, },
"analyse lfsr": { "analyse lfsr": {
"command": "analyse lfsr", "command": "analyse lfsr",
@ -380,15 +380,15 @@
}, },
"data envelope": { "data envelope": {
"command": "data envelope", "command": "data envelope",
"description": "Create an square envelop of the samples", "description": "Create an square envelope of the samples",
"notes": [ "notes": [
"data envelop" "data envelope"
], ],
"offline": true, "offline": true,
"options": [ "options": [
"-h, --help This help" "-h, --help This help"
], ],
"usage": "data envelop [-h]" "usage": "data envelope [-h]"
}, },
"data fsktonrz": { "data fsktonrz": {
"command": "data fsktonrz", "command": "data fsktonrz",
@ -582,7 +582,7 @@
"description": "Function takes a decimal or hexdecimal number and print it in decimal/hex/binary Will print message if number is a prime number", "description": "Function takes a decimal or hexdecimal number and print it in decimal/hex/binary Will print message if number is a prime number",
"notes": [ "notes": [
"data num --dec 2023", "data num --dec 2023",
"data num --hex 0x1000" "data num --hex 2A"
], ],
"offline": true, "offline": true,
"options": [ "options": [
@ -3141,9 +3141,25 @@
], ],
"usage": "hf gallagher diversify [-h] --aid <hex> [--keynum <dec>] [--uid <hex>] [--sitekey <hex>] [--apdu]" "usage": "hf gallagher diversify [-h] --aid <hex> [--keynum <dec>] [--uid <hex>] [--sitekey <hex>] [--apdu]"
}, },
"hf gallagher encode": {
"command": "hf gallagher encode",
"description": "Encode a Gallagher credential block Credential block can be specified with or without the bitwise inverse.",
"notes": [
"hf gallagher encode --rc 1 --fc 22153 --cn 1253518 --il 1"
],
"offline": true,
"options": [
"-h, --help This help",
"-r, --rc <dec> Region code. 4 bits max",
"-f, --fc <dec> Facility code. 2 bytes max",
"-c, --cn <dec> Card number. 3 bytes max",
"-i, --il <dec> Issue level. 4 bits max"
],
"usage": "hf gallagher encode [-h] -r <dec> -f <dec> -c <dec> -i <dec>"
},
"hf gallagher help": { "hf gallagher help": {
"command": "hf gallagher help", "command": "hf gallagher help",
"description": "help This help diversifykey Diversify Gallagher key decode Decode Gallagher credential block --------------------------------------------------------------------------------------- hf gallagher reader available offline: no Read a Gallagher DESFire tag from the Card Application Directory, CAD Specify site key is required if using non-default key", "description": "help This help diversifykey Diversify Gallagher key decode Decode Gallagher credential block encode Encode Gallagher credential block --------------------------------------------------------------------------------------- hf gallagher reader available offline: no Read a Gallagher DESFire tag from the Card Application Directory, CAD Specify site key is required if using non-default key",
"notes": [ "notes": [
"hf gallagher reader -@ -> continuous reader mode", "hf gallagher reader -@ -> continuous reader mode",
"hf gallagher reader --aid 2081f4 --sitekey 00112233445566778899aabbccddeeff -> skip CAD" "hf gallagher reader --aid 2081f4 --sitekey 00112233445566778899aabbccddeeff -> skip CAD"
@ -4367,9 +4383,10 @@
"options": [ "options": [
"-h, --help This help", "-h, --help This help",
"-b, --blk <dec> block number", "-b, --blk <dec> block number",
"-v, --verbose verbose output" "-v, --verbose verbose output",
"--gdm use gdm alt (20/23) magic wakeup"
], ],
"usage": "hf mf cgetblk [-hv] -b <dec>" "usage": "hf mf cgetblk [-hv] -b <dec> [--gdm]"
}, },
"hf mf cgetsc": { "hf mf cgetsc": {
"command": "hf mf cgetsc", "command": "hf mf cgetsc",
@ -4381,9 +4398,10 @@
"options": [ "options": [
"-h, --help This help", "-h, --help This help",
"-s, --sec <dec> sector number", "-s, --sec <dec> sector number",
"-v, --verbose verbose output" "-v, --verbose verbose output",
"--gdm use gdm alt (20/23) magic wakeup"
], ],
"usage": "hf mf cgetsc [-hv] -s <dec>" "usage": "hf mf cgetsc [-hv] -s <dec> [--gdm]"
}, },
"hf mf chk": { "hf mf chk": {
"command": "hf mf chk", "command": "hf mf chk",
@ -4431,9 +4449,10 @@
"--1k MIFARE Classic 1k / S50 (def)", "--1k MIFARE Classic 1k / S50 (def)",
"--2k MIFARE Classic/Plus 2k", "--2k MIFARE Classic/Plus 2k",
"--4k MIFARE Classic 4k / S70", "--4k MIFARE Classic 4k / S70",
"--emu from emulator memory" "--emu from emulator memory",
"--gdm use gdm alt (20/23) magic wakeup"
], ],
"usage": "hf mf cload [-h] [-f <fn>] [--mini] [--1k] [--2k] [--4k] [--emu]" "usage": "hf mf cload [-h] [-f <fn>] [--mini] [--1k] [--2k] [--4k] [--emu] [--gdm]"
}, },
"hf mf csave": { "hf mf csave": {
"command": "hf mf csave", "command": "hf mf csave",
@ -4450,9 +4469,10 @@
"--1k MIFARE Classic 1k / S50 (def)", "--1k MIFARE Classic 1k / S50 (def)",
"--2k MIFARE Classic/Plus 2k", "--2k MIFARE Classic/Plus 2k",
"--4k MIFARE Classic 4k / S70", "--4k MIFARE Classic 4k / S70",
"--emu to emulator memory" "--emu to emulator memory",
"--gdm to emulator memory"
], ],
"usage": "hf mf csave [-h] [-f <fn>] [--mini] [--1k] [--2k] [--4k] [--emu]" "usage": "hf mf csave [-h] [-f <fn>] [--mini] [--1k] [--2k] [--4k] [--emu] [--gdm]"
}, },
"hf mf csetblk": { "hf mf csetblk": {
"command": "hf mf csetblk", "command": "hf mf csetblk",
@ -4465,9 +4485,10 @@
"-h, --help This help", "-h, --help This help",
"-b, --blk <dec> block number", "-b, --blk <dec> block number",
"-d, --data <hex> bytes to write, 16 hex bytes", "-d, --data <hex> bytes to write, 16 hex bytes",
"-w, --wipe wipes card with backdoor cmd before writing" "-w, --wipe wipes card with backdoor cmd before writing",
"--gdm use gdm alt (20/23) magic wakeup"
], ],
"usage": "hf mf csetblk [-hw] -b <dec> [-d <hex>]" "usage": "hf mf csetblk [-hw] -b <dec> [-d <hex>] [--gdm]"
}, },
"hf mf csetuid": { "hf mf csetuid": {
"command": "hf mf csetuid", "command": "hf mf csetuid",
@ -4482,9 +4503,10 @@
"-w, --wipe wipes card with backdoor cmd`", "-w, --wipe wipes card with backdoor cmd`",
"-u, --uid <hex> UID, 4/7 hex bytes", "-u, --uid <hex> UID, 4/7 hex bytes",
"-a, --atqa <hex> ATQA, 2 hex bytes", "-a, --atqa <hex> ATQA, 2 hex bytes",
"-s, --sak <hex> SAK, 1 hex byte" "-s, --sak <hex> SAK, 1 hex byte",
"--gdm use gdm alt (20/23) magic wakeup"
], ],
"usage": "hf mf csetuid [-hw] [-u <hex>] [-a <hex>] [-s <hex>]" "usage": "hf mf csetuid [-hw] [-u <hex>] [-a <hex>] [-s <hex>] [--gdm]"
}, },
"hf mf cview": { "hf mf cview": {
"command": "hf mf cview", "command": "hf mf cview",
@ -4500,9 +4522,10 @@
"--1k MIFARE Classic 1k / S50 (def)", "--1k MIFARE Classic 1k / S50 (def)",
"--2k MIFARE Classic/Plus 2k", "--2k MIFARE Classic/Plus 2k",
"--4k MIFARE Classic 4k / S70", "--4k MIFARE Classic 4k / S70",
"-v, --verbose verbose output" "-v, --verbose verbose output",
"--gdm use gdm alt (20/23) magic wakeup"
], ],
"usage": "hf mf cview [-hv] [--mini] [--1k] [--2k] [--4k]" "usage": "hf mf cview [-hv] [--mini] [--1k] [--2k] [--4k] [--gdm]"
}, },
"hf mf cwipe": { "hf mf cwipe": {
"command": "hf mf cwipe", "command": "hf mf cwipe",
@ -4516,9 +4539,10 @@
"-h, --help This help", "-h, --help This help",
"-u, --uid <hex> UID, 4 hex bytes", "-u, --uid <hex> UID, 4 hex bytes",
"-a, --atqa <hex> ATQA, 2 hex bytes", "-a, --atqa <hex> ATQA, 2 hex bytes",
"-s, --sak <hex> SAK, 1 hex byte" "-s, --sak <hex> SAK, 1 hex byte",
"--gdm use gdm alt (20/23) magic wakeup"
], ],
"usage": "hf mf cwipe [-h] [-u <hex>] [-a <hex>] [-s <hex>]" "usage": "hf mf cwipe [-h] [-u <hex>] [-a <hex>] [-s <hex>] [--gdm]"
}, },
"hf mf darkside": { "hf mf darkside": {
"command": "hf mf darkside", "command": "hf mf darkside",
@ -5383,17 +5407,18 @@
"--1k MIFARE Classic 1k / S50", "--1k MIFARE Classic 1k / S50",
"--2k MIFARE Classic/Plus 2k", "--2k MIFARE Classic/Plus 2k",
"--4k MIFARE Classic 4k / S70", "--4k MIFARE Classic 4k / S70",
"--atqa <hex> Provide explicit ATQA (2 bytes, overrides option t)", "--atqa <hex> Provide explicit ATQA (2 bytes)",
"--sak <hex> Provide explicit SAK (1 bytes, overrides option t)", "--sak <hex> Provide explicit SAK (1 bytes)",
"-n, --num <dec> Automatically exit simulation after <numreads> blocks have been read by reader. 0 = infinite", "-n, --num <dec> Automatically exit simulation after <numreads> blocks have been read by reader. 0 = infinite",
"-i, --interactive Console will not be returned until simulation finishes or is aborted", "-i, --interactive Console will not be returned until simulation finishes or is aborted",
"-x Performs the 'reader attack', nr/ar attack against a reader.", "-x Performs the 'reader attack', nr/ar attack against a reader.",
"-y Performs the nested 'reader attack'. This requires preloading nt & nt_enc in emulator memory. Implies -x.", "-y Performs the nested 'reader attack'. This requires preloading nt & nt_enc in emulator memory. Implies -x.",
"-e, --emukeys Fill simulator keys from found keys. Requires -x or -y. Implies -i. Simulation will restart automatically.", "-e, --emukeys Fill simulator keys from found keys. Requires -x or -y. Implies -i. Simulation will restart automatically.",
"-v, --verbose verbose output", "--allowkeyb Allow key B even if readable",
"--cve trigger CVE 2021_0430" "-v, --verbose Verbose output",
"--cve Trigger CVE 2021_0430"
], ],
"usage": "hf mf sim [-hixyev] [-u <hex>] [--mini] [--1k] [--2k] [--4k] [--atqa <hex>] [--sak <hex>] [-n <dec> ] [--cve]" "usage": "hf mf sim [-hixyev] [-u <hex>] [--mini] [--1k] [--2k] [--4k] [--atqa <hex>] [--sak <hex>] [-n <dec> ] [--allowkeyb] [--cve]"
}, },
"hf mf staticnested": { "hf mf staticnested": {
"command": "hf mf staticnested", "command": "hf mf staticnested",
@ -8501,7 +8526,7 @@
"lf cmdread -d 50 -z 116 -o 166 -e W3000 -c W11000 -> probing for Hitag 2/S", "lf cmdread -d 50 -z 116 -o 166 -e W3000 -c W11000 -> probing for Hitag 2/S",
"lf cmdread -d 50 -z 116 -o 166 -e W3000 -c W11010 -> probing for Hitag S", "lf cmdread -d 50 -z 116 -o 166 -e W3000 -c W11010 -> probing for Hitag S",
"lf cmdread -d 50 -z 116 -o 166 -e W3000 -c W11000 -s 2000 -@ -> probing for Hitag 2/S, oscilloscope style", "lf cmdread -d 50 -z 116 -o 166 -e W3000 -c W11000 -s 2000 -@ -> probing for Hitag 2/S, oscilloscope style",
"lf cmdread -d 48 -z 112 -o 176 -e W3000 -e S240 -e E336 -c W0S00000010000E -> probing for Hitag \u00b5(micro)" "lf cmdread -d 48 -z 112 -o 176 -e W3000 -e S240 -e E336 -c W0S00000010000E -> probing for Hitag \u00e6(micro)"
], ],
"offline": false, "offline": false,
"options": [ "options": [
@ -9737,7 +9762,7 @@
"-1, --ht1 Card type Hitag 1", "-1, --ht1 Card type Hitag 1",
"-2, --ht2 Card type Hitag 2", "-2, --ht2 Card type Hitag 2",
"-s, --hts Card type Hitag S", "-s, --hts Card type Hitag S",
"-m, --htm Card type Hitag \u03bc" "-m, --htm Card type Hitag \u00ce\u00bc"
], ],
"usage": "lf hitag eload [-h12sm] -f <fn>" "usage": "lf hitag eload [-h12sm] -f <fn>"
}, },
@ -9813,10 +9838,11 @@
"--nrar <hex> nonce / answer writer, 8 hex bytes", "--nrar <hex> nonce / answer writer, 8 hex bytes",
"--crypto crypto mode", "--crypto crypto mode",
"-k, --key <hex> pwd or key, 4 or 6 hex bytes", "-k, --key <hex> pwd or key, 4 or 6 hex bytes",
"-m, --mode <dec> response protocol mode. 0 (Standard 00110), 1 (Advanced 11000), 2 (Advanced 11001), 3 (Fast Advanced 11010) (def: 3)",
"-p, --page <dec> page address to read from", "-p, --page <dec> page address to read from",
"-c, --count <dec> how many pages to read. '0' reads all pages up to the end page (default: 1)" "-c, --count <dec> how many pages to read. '0' reads all pages up to the end page (def: 1)"
], ],
"usage": "lf hitag hts rdbl [-h8] [--nrar <hex>] [--crypto] [-k <hex>] [-p <dec>] [-c <dec>]" "usage": "lf hitag hts rdbl [-h8] [--nrar <hex>] [--crypto] [-k <hex>] [-m <dec>] [-p <dec>] [-c <dec>]"
}, },
"lf hitag hts reader": { "lf hitag hts reader": {
"command": "lf hitag hts reader", "command": "lf hitag hts reader",
@ -9863,10 +9889,11 @@
"--nrar <hex> nonce / answer writer, 8 hex bytes", "--nrar <hex> nonce / answer writer, 8 hex bytes",
"--crypto crypto mode", "--crypto crypto mode",
"-k, --key <hex> pwd or key, 4 or 6 hex bytes", "-k, --key <hex> pwd or key, 4 or 6 hex bytes",
"-m, --mode <dec> response protocol mode. 0 (Standard 00110), 1 (Advanced 11000), 2 (Advanced 11001), 3 (Fast Advanced 11010) (def: 3)",
"-p, --page <dec> page address to write to", "-p, --page <dec> page address to write to",
"-d, --data <hex> data, 4 hex bytes" "-d, --data <hex> data, 4 hex bytes"
], ],
"usage": "lf hitag hts wrbl [-h8] [--nrar <hex>] [--crypto] [-k <hex>] -p <dec> -d <hex>" "usage": "lf hitag hts wrbl [-h8] [--nrar <hex>] [--crypto] [-k <hex>] [-m <dec>] -p <dec> -d <hex>"
}, },
"lf hitag info": { "lf hitag info": {
"command": "lf hitag info", "command": "lf hitag info",
@ -12976,8 +13003,8 @@
} }
}, },
"metadata": { "metadata": {
"commands_extracted": 748, "commands_extracted": 749,
"extracted_by": "PM3Help2JSON v1.00", "extracted_by": "PM3Help2JSON v1.00",
"extracted_on": "2024-10-18T15:36:53" "extracted_on": "2024-11-02T12:57:51"
} }
} }

View file

@ -74,7 +74,7 @@ Check column "offline" for their availability.
|command |offline |description |command |offline |description
|------- |------- |----------- |------- |------- |-----------
|`analyse help `|Y |`This help` |`analyse help `|Y |`This help`
|`analyse lcr `|Y |`Generate final byte for XOR LRC` |`analyse lrc `|Y |`Generate final byte for XOR LRC`
|`analyse crc `|Y |`Stub method for CRC evaluations` |`analyse crc `|Y |`Stub method for CRC evaluations`
|`analyse chksum `|Y |`Checksum with adding, masking and one's complement` |`analyse chksum `|Y |`Checksum with adding, masking and one's complement`
|`analyse dates `|Y |`Look for datestamps in a given array of bytes` |`analyse dates `|Y |`Look for datestamps in a given array of bytes`
@ -382,6 +382,7 @@ Check column "offline" for their availability.
|`hf gallagher delete `|N |`Delete Gallagher credentials from a DESFire card` |`hf gallagher delete `|N |`Delete Gallagher credentials from a DESFire card`
|`hf gallagher diversifykey`|Y |`Diversify Gallagher key` |`hf gallagher diversifykey`|Y |`Diversify Gallagher key`
|`hf gallagher decode `|Y |`Decode Gallagher credential block` |`hf gallagher decode `|Y |`Decode Gallagher credential block`
|`hf gallagher encode `|Y |`Encode Gallagher credential block`
### hf iclass ### hf iclass

View file

@ -374,7 +374,7 @@ UID 4b: (actually NUID as there are no more "unique" IDs on 4b)
``` ```
Computing BCC on UID 11223344: `analyse lcr -d 11223344` = `44` Computing BCC on UID 11223344: `analyse lrc -d 11223344` = `44`
UID 7b: UID 7b:
@ -1607,9 +1607,9 @@ BCC1 Int LCK0 LCK1
UID is made of SN0..SN6 bytes UID is made of SN0..SN6 bytes
Computing BCC0 on UID 04112233445566: `analyse lcr -d 88041122` = `bf` Computing BCC0 on UID 04112233445566: `analyse lrc -d 88041122` = `bf`
Computing BCC1 on UID 04112233445566: `analyse lcr -d 33445566` = `44` Computing BCC1 on UID 04112233445566: `analyse lrc -d 33445566` = `44`
Int is internal, typically 0x48 Int is internal, typically 0x48