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

@ -396,7 +396,7 @@ static int CmdVASReader(const char *Cmd) {
"Read and decrypt Value Added Services (VAS) message",
"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,
@ -469,7 +469,7 @@ static int CmdVASReader(const char *Cmd) {
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);
@ -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

@ -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);
}
}
@ -134,10 +134,10 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) {
const struct tlv *aaeffect_tlv = tlvdb_get_tlv(aeffect_full);
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]
);
}
}
@ -147,10 +147,10 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) {
const struct tlv *aexd_tlv = tlvdb_get_tlv(aexd_full);
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]
);
}
}
@ -160,15 +160,15 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen) {
const struct tlv *apan_tlv = tlvdb_get_tlv(apan_full);
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]
);
}
}
@ -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);

View file

@ -114,19 +114,20 @@ const static vocabulory_t vocabulory[] = {
{ 1, "data setdebugmode" },
{ 0, "data tune" },
{ 1, "emv help" },
{ 1, "emv list" },
{ 1, "emv test" },
{ 0, "emv challenge" },
{ 0, "emv exec" },
{ 0, "emv genac" },
{ 0, "emv gpo" },
{ 0, "emv intauth" },
{ 0, "emv pse" },
{ 0, "emv reader" },
{ 0, "emv readrec" },
{ 0, "emv roca" },
{ 0, "emv scan" },
{ 0, "emv search" },
{ 0, "emv select" },
{ 0, "emv gpo" },
{ 0, "emv readrec" },
{ 0, "emv genac" },
{ 0, "emv challenge" },
{ 0, "emv intauth" },
{ 0, "emv scan" },
{ 1, "emv test" },
{ 1, "emv list" },
{ 0, "emv roca" },
{ 1, "hf help" },
{ 1, "hf list" },
{ 0, "hf plot" },
@ -475,12 +476,15 @@ const static vocabulory_t vocabulory[] = {
{ 0, "hf topaz sniff" },
{ 1, "hf topaz view" },
{ 0, "hf topaz wrbl" },
{ 1, "hf vas help" },
{ 0, "hf vas reader" },
{ 1, "hf vas decrypt" },
{ 1, "hf waveshare help" },
{ 0, "hf waveshare loadbmp" },
{ 1, "hf xerox help" },
{ 0, "hf xerox info" },
{ 0, "hf xerox reader" },
{ 0, "hf xerox dump" },
{ 1, "hf waveshare help" },
{ 0, "hf waveshare loadbmp" },
{ 1, "hw help" },
{ 0, "hw break" },
{ 1, "hw connect" },
@ -498,6 +502,7 @@ const static vocabulory_t vocabulory[] = {
{ 0, "hw status" },
{ 0, "hw tearoff" },
{ 0, "hw tia" },
{ 1, "hw timeout" },
{ 0, "hw tune" },
{ 1, "hw version" },
{ 1, "lf help" },

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`