This commit is contained in:
iceman1001 2023-07-10 16:41:00 +02:00
parent 46fc20165b
commit 40534d1f07
6 changed files with 967 additions and 886 deletions

View file

@ -194,7 +194,7 @@ static const hintAIDList_t hintAIDList[] = {
{ "\x32\x50\x41\x59\x2E\x53\x59\x53\x2E\x44\x44\x46\x30\x31", 14, "EMV (ppse)", "emv" },
{ "\x41\x44\x20\x46\x31", 5, "CIPURSE", "hf cipurse" },
{ "\xd2\x76\x00\x00\x85\x01\x00", 7, "desfire", "hf mfdes" },
{ "\x4F\x53\x45\x2E\x56\x41\x53\x2E\x30\x31",10, "Apple VAS", "hf vas"},
{ "\x4F\x53\x45\x2E\x56\x41\x53\x2E\x30\x31", 10, "Apple VAS", "hf vas"},
};
// iso14a apdu input frame length

View file

@ -235,7 +235,7 @@ static int LoadMobileEphemeralKey(uint8_t *xcoordBuf, mbedtls_ecp_keypair *pubKe
}
static int internalVasDecrypt(uint8_t *cipherText, size_t cipherTextLen, uint8_t *sharedSecret,
uint8_t *ansiSharedInfo, size_t ansiSharedInfoLen,
uint8_t *ansiSharedInfo, size_t ansiSharedInfoLen,
uint8_t *gcmAad, size_t gcmAadLen, uint8_t *out, size_t *outLen) {
uint8_t key[32] = {0};
if (ansi_x963_sha256(sharedSecret, 32, ansiSharedInfo, ansiSharedInfoLen, sizeof(key), key)) {
@ -394,9 +394,9 @@ static int CmdVASReader(const char *Cmd) {
CLIParserContext *ctx;
CLIParserInit(&ctx, "hf vas reader",
"Read and decrypt Value Added Services (VAS) message",
"hf vas reader --url https://example.com -> URL Only mode\n"
"hf vas reader --url https://example.com -> URL Only mode\n"
"hf vas reader --pid pass.com.passkit.pksamples.nfcdemo -f vas_privkey.der -@\n"
);
);
void *argtable[] = {
arg_param_begin,
@ -468,8 +468,8 @@ static int CmdVASReader(const char *Cmd) {
if (continuous && kbd_enter_pressed()) {
break;
}
res = VASReader( (pidlen > 0) ? pidhash : NULL, url, urllen, cryptogram, &clen, verbose);
res = VASReader((pidlen > 0) ? pidhash : NULL, url, urllen, cryptogram, &clen, verbose);
if (res == PM3_SUCCESS) {
res = DecryptVASCryptogram(pidhash, cryptogram, clen, &privKey, msg, &mlen, &timestamp);
@ -482,7 +482,7 @@ static int CmdVASReader(const char *Cmd) {
}
}
}
msleep(300);
msleep(300);
} while (continuous);
mbedtls_ecp_keypair_free(&privKey);
@ -494,7 +494,7 @@ static int CmdVASDecrypt(const char *Cmd) {
CLIParserInit(&ctx, "hf vas decrypt",
"Decrypt a previously captured cryptogram",
"hf vas decrypt --pid pass.com.passkit.pksamples.nfcdemo -f vas_privkey.der -d c0b77375eae416b79449347f9fe838c05cdb57dc7470b97b93b806cb348771d9bfbe29d58538c7c7d7c3d015fa205b68bfccd726058a62f7f44085ac98dbf877120fd9059f1507b956e0a6d56d0a\n"
);
);
void *argtable[] = {
arg_param_begin,

View file

@ -76,7 +76,7 @@ static void PrintChannel(Iso7816CommandChannel channel) {
}
static int emv_parse_card_details(uint8_t *response, size_t reslen) {
struct tlvdb *root = tlvdb_parse_multi(response, reslen);
if (root == NULL) {
return PM3_EINVARG;
@ -123,7 +123,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) {
if (acc_full != NULL) {
const struct tlv *acc_tlv = tlvdb_get_tlv(acc_full);
if (acc_tlv->len == 2) {
uint16_t acc = MemBeToUint2byte((const uint8_t*)acc_tlv->value);
uint16_t acc = MemBeToUint2byte((const uint8_t *)acc_tlv->value);
PrintAndLogEx(INFO, "Currency Code........ " _YELLOW_("%02X"), acc);
}
}
@ -132,12 +132,12 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) {
struct tlvdb *aeffect_full = tlvdb_find_full(root, 0x5F25);
if (aeffect_full != NULL) {
const struct tlv *aaeffect_tlv = tlvdb_get_tlv(aeffect_full);
if (aaeffect_tlv->len == 3) {
if (aaeffect_tlv->len == 3) {
PrintAndLogEx(INFO, "Effective date....... " _YELLOW_("20%02x-%02x-%02x"),
aaeffect_tlv->value[0],
aaeffect_tlv->value[1],
aaeffect_tlv->value[2]
);
aaeffect_tlv->value[0],
aaeffect_tlv->value[1],
aaeffect_tlv->value[2]
);
}
}
@ -145,12 +145,12 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) {
struct tlvdb *aexd_full = tlvdb_find_full(root, 0x5F24);
if (aexd_full != NULL) {
const struct tlv *aexd_tlv = tlvdb_get_tlv(aexd_full);
if (aexd_tlv->len == 3) {
if (aexd_tlv->len == 3) {
PrintAndLogEx(INFO, "Expiration date...... " _YELLOW_("20%02x-%02x-%02x"),
aexd_tlv->value[0],
aexd_tlv->value[1],
aexd_tlv->value[2]
);
aexd_tlv->value[0],
aexd_tlv->value[1],
aexd_tlv->value[2]
);
}
}
@ -158,17 +158,17 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) {
struct tlvdb *apan_full = tlvdb_find_full(root, 0x5A);
if (apan_full != NULL) {
const struct tlv *apan_tlv = tlvdb_get_tlv(apan_full);
if (apan_tlv->len == 8) {
if (apan_tlv->len == 8) {
PrintAndLogEx(INFO, "PAN.................. " _YELLOW_("%02x%02x %02x%02x %02x%02x %02x%02x"),
apan_tlv->value[0],
apan_tlv->value[1],
apan_tlv->value[2],
apan_tlv->value[3],
apan_tlv->value[4],
apan_tlv->value[5],
apan_tlv->value[6],
apan_tlv->value[7]
);
apan_tlv->value[0],
apan_tlv->value[1],
apan_tlv->value[2],
apan_tlv->value[3],
apan_tlv->value[4],
apan_tlv->value[5],
apan_tlv->value[6],
apan_tlv->value[7]
);
}
}
@ -176,7 +176,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) {
struct tlvdb *apansq_full = tlvdb_find_full(root, 0x5F34);
if (apansq_full != NULL) {
const struct tlv *apansq_tlv = tlvdb_get_tlv(apansq_full);
if (apansq_tlv->len == 1) {
if (apansq_tlv->len == 1) {
PrintAndLogEx(INFO, "PAN Sequence......... " _YELLOW_("%u"), apansq_tlv->value[0]);
}
}
@ -185,7 +185,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) {
struct tlvdb *chm_full = tlvdb_find_full(root, 0x5F20);
if (chm_full != NULL) {
const struct tlv *chm_tlv = tlvdb_get_tlv(chm_full);
if (chm_tlv->len) {
if (chm_tlv->len) {
PrintAndLogEx(INFO, "Cardhold Name........ " _YELLOW_("%s"), sprint_ascii(chm_tlv->value, chm_tlv->len));
}
}
@ -194,7 +194,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) {
struct tlvdb *track1_full = tlvdb_find_full(root, 0x56);
if (track1_full != NULL) {
const struct tlv *track1_tlv = tlvdb_get_tlv(track1_full);
if (track1_tlv->len) {
if (track1_tlv->len) {
PrintAndLogEx(INFO, "Track 1.............. " _YELLOW_("%s"), sprint_ascii(track1_tlv->value, track1_tlv->len));
}
}
@ -203,7 +203,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) {
struct tlvdb *track2_full = tlvdb_find_full(root, 0x9F6B);
if (track2_full != NULL) {
const struct tlv *track2_tlv = tlvdb_get_tlv(track2_full);
if (track2_tlv->len) {
if (track2_tlv->len) {
PrintAndLogEx(INFO, "Track 2.............. " _YELLOW_("%s"), sprint_hex_inrow(track2_tlv->value, track2_tlv->len));
}
}
@ -212,7 +212,7 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) {
struct tlvdb *track2_eq_full = tlvdb_find_full(root, 0x57);
if (track2_eq_full != NULL) {
const struct tlv *track2_eq_tlv = tlvdb_get_tlv(track2_eq_full);
if (track2_eq_tlv->len) {
if (track2_eq_tlv->len) {
PrintAndLogEx(INFO, "Track 2 equivalent... " _YELLOW_("%s"), sprint_hex_inrow(track2_eq_tlv->value, track2_eq_tlv->len));
}
}
@ -2272,7 +2272,7 @@ out:
return ret;
}
static int CmdEMVReader(const char *Cmd){
static int CmdEMVReader(const char *Cmd) {
CLIParserContext *ctx;
CLIParserInit(&ctx, "emv reader",
"Act as a EMV reader to identify tag. Look for EMV tags until Enter or the pm3 button is pressed",
@ -2385,9 +2385,9 @@ static int CmdEMVReader(const char *Cmd){
emv_parse_card_details(buf, len);
if (tlvdb_get(tlvRoot, 0x77, NULL)) {
if (tlvdb_get(tlvRoot, 0x77, NULL)) {
break;
}
}
}
const struct tlv *AFL = tlvdb_get(tlvRoot, 0x94, NULL);
@ -2441,7 +2441,7 @@ static command_t CommandTable[] = {
{"search", CmdEMVSearch, IfPm3Iso14443, "Try to select all applets from applets list and print installed applets"},
{"select", CmdEMVSelect, IfPm3Iso14443, "Select applet"},
/*
{"-----------", CmdHelp, IfPm3Iso14443a, "---------------------- " _CYAN_("simulation") " ---------------------"},
{"-----------", CmdHelp, IfPm3Iso14443a, "---------------------- " _CYAN_("simulation") " ---------------------"},
{"getrng", CmdEMVGetrng, IfPm3Iso14443, "get random number from terminal"},
{"eload", CmdEmvELoad, IfPm3Iso14443, "load EMV tag into device"},
{"dump", CmdEmvDump, IfPm3Iso14443, "dump EMV tag values"},

File diff suppressed because it is too large Load diff

View file

@ -762,9 +762,9 @@
"offline": false,
"options": [
"-h, --help This help",
"-k, -K, --keep Keep field ON for next command",
"-a, -A, --apdu Show APDU requests and responses",
"-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)"
"-k, --keep Keep field ON for next command",
"-a, --apdu Show APDU requests and responses",
"-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)"
],
"usage": "emv challenge [-hkaw]"
},
@ -778,19 +778,19 @@
"offline": false,
"options": [
"-h, --help This help",
"-s, -S, --select Activate field and select card",
"-a, -A, --apdu Show APDU requests and responses",
"-t, -T, --tlv TLV decode results",
"-j, -J, --jload Load transaction parameters from `emv_defparams.json` file",
"-f, -F, --forceaid Force search AID. Search AID instead of execute PPSE",
"-s, --select Activate field and select card",
"-a, --apdu Show APDU requests and responses",
"-t, --tlv TLV decode results",
"-j, --jload Load transaction parameters from `emv_defparams.json` file",
"--force Force search AID. Search AID instead of execute PPSE",
"By default: Transaction type - MSD",
"-v, -V, --qvsdc Transaction type - qVSDC or M/Chip",
"-c, -C, --qvsdccda Transaction type - qVSDC or M/Chip plus CDA (SDAD generation)",
"-x, -X, --vsdc Transaction type - VSDC. For test only. Not a standard behavior",
"-g, -G, --acgpo VISA. generate AC from GPO",
"-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)"
"-v, --qvsdc Transaction type - qVSDC or M/Chip",
"-c, --qvsdccda Transaction type - qVSDC or M/Chip plus CDA (SDAD generation)",
"-x, --vsdc Transaction type - VSDC. For test only. Not a standard behavior",
"-g, --acgpo VISA. generate AC from GPO",
"-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)"
],
"usage": "emv exec [-hsatjfvcxgw] By default:"
"usage": "emv exec [-hsatjvcxgw] [--force] By default:"
},
"emv genac": {
"command": "emv genac",
@ -804,14 +804,14 @@
"offline": false,
"options": [
"-h, --help This help",
"-k, -K, --keep Keep field ON for next command",
"-c, -C, --cda Executes CDA transaction. Needs to get SDAD in results.",
"-d, -D, --decision <aac|tc|arqc> Terminal decision. aac - declined, tc - approved, arqc - online authorisation requested",
"-p, -P, --params Load parameters from `emv_defparams.json` file for CDOLdata making from CDOL and parameters",
"-m, -M, --make Make CDOLdata from CDOL (tag 8C and 8D) and parameters (def: use default parameters)",
"-a, -A, --apdu Show APDU requests and responses",
"-t, -T, --tlv TLV decode results of selected applets",
"-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
"-k, --keep Keep field ON for next command",
"-c, --cda Executes CDA transaction. Needs to get SDAD in results.",
"-d, --decision <aac|tc|arqc> Terminal decision. aac - declined, tc - approved, arqc - online authorisation requested",
"-p, --params Load parameters from `emv_defparams.json` file for CDOLdata making from CDOL and parameters",
"-m, --make Make CDOLdata from CDOL (tag 8C and 8D) and parameters (def: use default parameters)",
"-a, --apdu Show APDU requests and responses",
"-t, --tlv TLV decode results of selected applets",
"-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
"<hex> CDOLdata/CDOL"
],
"usage": "emv genac [-hkcpmatw] [-d <aac|tc|arqc>] <hex> [<hex>]..."
@ -827,12 +827,12 @@
"offline": false,
"options": [
"-h, --help This help",
"-k, -K, --keep Keep field ON for next command",
"-p, -P, --params Load parameters from `emv_defparams.json` file for PDOLdata making from PDOL and parameters",
"-m, -M, --make Make PDOLdata from PDOL (tag 9F38) and parameters (def: uses default parameters)",
"-a, -A, --apdu Show APDU requests and responses",
"-t, -T, --tlv TLV decode results of selected applets",
"-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
"-k, --keep Keep field ON for next command",
"-p, --params Load parameters from `emv_defparams.json` file for PDOLdata making from PDOL and parameters",
"-m, --make Make PDOLdata from PDOL (tag 9F38) and parameters (def: uses default parameters)",
"-a, --apdu Show APDU requests and responses",
"-t, --tlv TLV decode results of selected applets",
"-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
"<hex> PDOLdata/PDOL"
],
"usage": "emv gpo [-hkpmatw] [<hex>]..."
@ -848,12 +848,12 @@
"offline": false,
"options": [
"-h, --help This help",
"-k, -K, --keep Keep field ON for next command",
"-p, -P, --params Load parameters from `emv_defparams.json` file for DDOLdata making from DDOL and parameters",
"-m, -M, --make Make DDOLdata from DDOL (tag 9F49) and parameters (def: use default parameters)",
"-a, -A, --apdu Show APDU requests and responses",
"-t, -T, --tlv TLV decode results of selected applets",
"-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
"-k, --keep Keep field ON for next command",
"-p, --params Load parameters from `emv_defparams.json` file for DDOLdata making from DDOL and parameters",
"-m, --make Make DDOLdata from DDOL (tag 9F49) and parameters (def: use default parameters)",
"-a, --apdu Show APDU requests and responses",
"-t, --tlv TLV decode results of selected applets",
"-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
"<hex> DDOLdata/DDOL"
],
"usage": "emv intauth [-hkpmatw] <hex> [<hex>]..."
@ -889,16 +889,31 @@
"offline": false,
"options": [
"-h, --help This help",
"-s, -S, --select Activate field and select card",
"-k, -K, --keep Keep field ON for next command",
"-s, --select Activate field and select card",
"-k, --keep Keep field ON for next command",
"-1, --pse PSE (1PAY.SYS.DDF01) mode",
"-2, --ppse PPSE (2PAY.SYS.DDF01) mode (def)",
"-a, -A, --apdu Show APDU requests and responses",
"-t, -T, --tlv TLV decode results of selected applets",
"-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)"
"-a, --apdu Show APDU requests and responses",
"-t, --tlv TLV decode results of selected applets",
"-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)"
],
"usage": "emv pse [-hsk12atw]"
},
"emv reader": {
"command": "emv reader",
"description": "Act as a EMV reader to identify tag. Look for EMV tags until Enter or the pm3 button is pressed",
"notes": [
"emv reader",
"emv reader -@ -> Continuous mode"
],
"offline": false,
"options": [
"-h, --help This help",
"-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
"-@ continuous reader mode"
],
"usage": "emv reader [-hw@]"
},
"emv readrec": {
"command": "emv readrec",
"description": "Executes Read Record command. It returns data in TLV format. Needs a bank applet to be selected and sometimes needs GPO to be executed.",
@ -909,10 +924,10 @@
"offline": false,
"options": [
"-h, --help This help",
"-k, -K, --keep Keep field ON for next command",
"-a, -A, --apdu Show APDU requests and responses",
"-t, -T, --tlv TLV decode results of selected applets",
"-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
"-k, --keep Keep field ON for next command",
"-a, --apdu Show APDU requests and responses",
"-t, --tlv TLV decode results of selected applets",
"-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
"<hex> <SFI 1 byte><SFIrecord 1 byte"
],
"usage": "emv readrec [-hkatw] <hex> [<hex>]..."
@ -927,9 +942,9 @@
"offline": false,
"options": [
"-h, --help This help",
"-t, -T, --selftest Self test",
"-a, -A, --apdu Show APDU requests and responses",
"-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)"
"-t, --selftest Self test",
"-a, --apdu Show APDU requests and responses",
"-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)"
],
"usage": "emv roca [-htaw]"
},
@ -943,18 +958,18 @@
"offline": false,
"options": [
"-h, --help This help",
"-a, -A, --apdu Show APDU requests and responses",
"-t, -T, --tlv TLV decode results",
"-e, -E, --extract Extract TLV elements and fill Application Data",
"-j, -J, --jload Load transaction parameters from `emv_defparams.json` file",
"-a, --apdu Show APDU requests and responses",
"-t, --tlv TLV decode results",
"-e, --extract Extract TLV elements and fill Application Data",
"-j, --jload Load transaction parameters from `emv_defparams.json` file",
"By default: Transaction type - MSD",
"-v, -V, --qvsdc Transaction type - qVSDC or M/Chip",
"-c, -C, --qvsdccda Transaction type - qVSDC or M/Chip plus CDA (SDAD generation)",
"-x, -X, --vsdc Transaction type - VSDC. For test only. Not a standard behavior",
"-g, -G, --acgpo VISA. generate AC from GPO",
"-m, -M, --merge Merge output file with card's data. (warning: the file may be corrupted!)",
"-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
"<fn> JSON output filename"
"-v, --qvsdc Transaction type - qVSDC or M/Chip",
"-c, --qvsdccda Transaction type - qVSDC or M/Chip plus CDA (SDAD generation)",
"-x, --vsdc Transaction type - VSDC. For test only. Not a standard behavior",
"-g, --acgpo VISA. generate AC from GPO",
"-m, --merge Merge output file with card's data. (warning: the file may be corrupted!)",
"-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
"<fn> JSON output file name"
],
"usage": "emv scan [-hatejvcxgmw] By default: <fn>"
},
@ -968,11 +983,11 @@
"offline": false,
"options": [
"-h, --help This help",
"-s, -S, --select Activate field and select card",
"-k, -K, --keep Keep field ON for next command",
"-a, -A, --apdu Show APDU requests and responses",
"-t, -T, --tlv TLV decode results of selected applets",
"-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)"
"-s, --select Activate field and select card",
"-k, --keep Keep field ON for next command",
"-a, --apdu Show APDU requests and responses",
"-t, --tlv TLV decode results of selected applets",
"-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)"
],
"usage": "emv search [-hskatw]"
},
@ -986,11 +1001,11 @@
"offline": false,
"options": [
"-h, --help This help",
"-s, -S, --select Activate field and select card",
"-k, -K, --keep Keep field for next command",
"-a, -A, --apdu Show APDU requests and responses",
"-t, -T, --tlv TLV decode results",
"-w, -W, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
"-s, --select Activate field and select card",
"-k, --keep Keep field for next command",
"-a, --apdu Show APDU requests and responses",
"-t, --tlv TLV decode results",
"-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)",
"<hex> Applet AID"
],
"usage": "emv select [-hskatw] <hex>"
@ -7091,6 +7106,39 @@
],
"usage": "hf tune [-h] [-n <dec>] [--bar] [--mix] [--value]"
},
"hf vas decrypt": {
"command": "hf vas decrypt",
"description": "Decrypt a previously captured cryptogram",
"notes": [
"hf vas decrypt --pid pass.com.passkit.pksamples.nfcdemo -f vas_privkey.der -d c0b77375eae416b79449347f9fe838c05cdb57dc7470b97b93b806cb348771d9bfbe29d58538c7c7d7c3d015fa205b68bfccd726058a62f7f44085ac98dbf877120fd9059f1507b956e0a6d56d0a"
],
"offline": true,
"options": [
"-h, --help This help",
"--pid <str> PID, pass type id",
"-f, --file <fn> path to terminal private key file",
"-d, --data <hex> cryptogram to decrypt"
],
"usage": "hf vas decrypt [-h] [--pid <str>] [-f <fn>] [-d <hex>]"
},
"hf vas reader": {
"command": "hf vas reader",
"description": "Read and decrypt Value Added Services (VAS) message",
"notes": [
"hf vas reader --url https://example.com -> URL Only mode",
"hf vas reader --pid pass.com.passkit.pksamples.nfcdemo -f vas_privkey.der -@"
],
"offline": false,
"options": [
"-h, --help This help",
"--pid <str> PID, pass type id",
"-f, --file <fn> path to terminal private key file",
"--url <str> a URL to provide to the mobile device",
"-@ continuous mode",
"-v, --verbose log additional information"
],
"usage": "hf vas reader [-h@v] [--pid <str>] [-f <fn>] [--url <str>]"
},
"hf waveshare loadbmp": {
"command": "hf waveshare loadbmp",
"description": "Load BMP file to Waveshare NFC ePaper.",
@ -7391,6 +7439,21 @@
],
"usage": "hw tia [-h]"
},
"hw timeout": {
"command": "hw timeout",
"description": "Set the communication timeout on the client side",
"notes": [
"hw timeout -> Show current timeout",
"hw timeout -t 20 -> Set the timeout to 20ms",
"hw timeout -t 500 -> Set the timeout to 500ms"
],
"offline": true,
"options": [
"-h, --help This help",
"-t, --timeout <dec> timeout in ms"
],
"usage": "hw timeout [-h] [-t <dec>]"
},
"hw tune": {
"command": "hw tune",
"description": "Measure antenna tuning",
@ -11622,8 +11685,8 @@
}
},
"metadata": {
"commands_extracted": 675,
"commands_extracted": 679,
"extracted_by": "PM3Help2JSON v1.00",
"extracted_on": "2023-06-27T13:20:13"
"extracted_on": "2023-07-10T14:40:45"
}
}

View file

@ -141,19 +141,20 @@ Check column "offline" for their availability.
|command |offline |description
|------- |------- |-----------
|`emv help `|Y |`This help`
|`emv list `|Y |`List ISO7816 history`
|`emv test `|Y |`Crypto logic test`
|`emv challenge `|N |`Generate challenge`
|`emv exec `|N |`Executes EMV contactless transaction`
|`emv genac `|N |`Generate ApplicationCryptogram`
|`emv gpo `|N |`Execute GetProcessingOptions`
|`emv intauth `|N |`Internal authentication`
|`emv pse `|N |`Execute PPSE. It selects 2PAY.SYS.DDF01 or 1PAY.SYS.DDF01 directory`
|`emv reader `|N |`Act like an EMV reader`
|`emv readrec `|N |`Read files from card`
|`emv roca `|N |`Extract public keys and run ROCA test`
|`emv scan `|N |`Scan EMV card and save it contents to json file for emulator`
|`emv search `|N |`Try to select all applets from applets list and print installed applets`
|`emv select `|N |`Select applet`
|`emv gpo `|N |`Execute GetProcessingOptions`
|`emv readrec `|N |`Read files from card`
|`emv genac `|N |`Generate ApplicationCryptogram`
|`emv challenge `|N |`Generate challenge`
|`emv intauth `|N |`Internal authentication`
|`emv scan `|N |`Scan EMV card and save it contents to json file for emulator`
|`emv test `|Y |`Crypto logic test`
|`emv list `|Y |`List ISO7816 history`
|`emv roca `|N |`Extract public keys and run ROCA test`
### hf
@ -482,7 +483,7 @@ Check column "offline" for their availability.
|`hf mf nack `|N |`Test for MIFARE NACK bug`
|`hf mf chk `|N |`Check keys`
|`hf mf fchk `|N |`Check keys fast, targets all keys on card`
|`hf mf decrypt `|Y |`[nt] [ar_enc] [at_enc] [data] - to decrypt sniff or trace`
|`hf mf decrypt `|Y |`Decrypt Crypto1 data from sniff or trace`
|`hf mf supercard `|N |`Extract info from a `super card``
|`hf mf auth4 `|N |`ISO14443-4 AES authentication`
|`hf mf acl `|Y |`Decode and print MIFARE Classic access rights bytes`
@ -720,16 +721,15 @@ Check column "offline" for their availability.
|`hf topaz wrbl `|N |`Write block`
### hf xerox
### hf vas
{ Fuji/Xerox cartridge RFIDs... }
{ Apple Value Added Service }
|command |offline |description
|------- |------- |-----------
|`hf xerox help `|Y |`This help`
|`hf xerox info `|N |`Short info on Fuji/Xerox tag`
|`hf xerox reader `|N |`Act like a Fuji/Xerox reader`
|`hf xerox dump `|N |`Read all memory pages of an Fuji/Xerox tag, save to file`
|`hf vas help `|Y |`This help`
|`hf vas reader `|N |`Read and decrypt VAS message`
|`hf vas decrypt `|Y |`Decrypt a previously captured VAS cryptogram`
### hf waveshare
@ -742,6 +742,18 @@ Check column "offline" for their availability.
|`hf waveshare loadbmp `|N |`Load BMP file to Waveshare NFC ePaper`
### hf xerox
{ Fuji/Xerox cartridge RFIDs... }
|command |offline |description
|------- |------- |-----------
|`hf xerox help `|Y |`This help`
|`hf xerox info `|N |`Short info on Fuji/Xerox tag`
|`hf xerox reader `|N |`Act like a Fuji/Xerox reader`
|`hf xerox dump `|N |`Read all memory pages of an Fuji/Xerox tag, save to file`
### hw
{ Hardware commands... }
@ -765,6 +777,7 @@ Check column "offline" for their availability.
|`hw status `|N |`Show runtime status information about the connected Proxmark3`
|`hw tearoff `|N |`Program a tearoff hook for the next command supporting tearoff`
|`hw tia `|N |`Trigger a Timing Interval Acquisition to re-adjust the RealTimeCounter divider`
|`hw timeout `|Y |`Set the communication timeout on the client side`
|`hw tune `|N |`Measure antenna tuning`
|`hw version `|Y |`Show version information about the client and the connected Proxmark3, if any`