mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-21 05:43:48 -07:00
Merge pull request #1320 from merlokk/hf_se
reworked fast aid search output
This commit is contained in:
commit
1599aa75e5
4 changed files with 42 additions and 21 deletions
|
@ -59,9 +59,13 @@ int CmdHFSearch(const char *Cmd) {
|
||||||
);
|
);
|
||||||
void *argtable[] = {
|
void *argtable[] = {
|
||||||
arg_param_begin,
|
arg_param_begin,
|
||||||
|
arg_lit0("v", "verbose", "verbose output"),
|
||||||
arg_param_end
|
arg_param_end
|
||||||
};
|
};
|
||||||
CLIExecWithReturn(ctx, Cmd, argtable, true);
|
CLIExecWithReturn(ctx, Cmd, argtable, true);
|
||||||
|
|
||||||
|
bool verbose = arg_get_lit(ctx, 1);
|
||||||
|
|
||||||
CLIParserFree(ctx);
|
CLIParserFree(ctx);
|
||||||
|
|
||||||
int res = PM3_ESOFT;
|
int res = PM3_ESOFT;
|
||||||
|
@ -91,7 +95,7 @@ int CmdHFSearch(const char *Cmd) {
|
||||||
PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 14443-A tag") " found\n");
|
PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 14443-A tag") " found\n");
|
||||||
res = PM3_SUCCESS;
|
res = PM3_SUCCESS;
|
||||||
|
|
||||||
infoHF14A4Applications();
|
infoHF14A4Applications(verbose);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -171,13 +171,13 @@ const char *getTagInfo(uint8_t uid) {
|
||||||
|
|
||||||
static const hintAIDListT hintAIDList[] = {
|
static const hintAIDListT hintAIDList[] = {
|
||||||
// AID, AID len, name, hint - how to use
|
// AID, AID len, name, hint - how to use
|
||||||
{ "\xA0\x00\x00\x06\x47\x2F\x00\x01", 8, "FIDO", "try hf fido commands" },
|
{ "\xA0\x00\x00\x06\x47\x2F\x00\x01", 8, "FIDO", "hf fido" },
|
||||||
{ "\xA0\x00\x00\x03\x08\x00\x00\x10\x00\x01\x00", 11, "PIV", "" },
|
{ "\xA0\x00\x00\x03\x08\x00\x00\x10\x00\x01\x00", 11, "PIV", "" },
|
||||||
{ "\xD2\x76\x00\x01\x24\x01", 8, "OpenPGP", "" },
|
{ "\xD2\x76\x00\x01\x24\x01", 8, "OpenPGP", "" },
|
||||||
{ "\x31\x50\x41\x59\x2E\x53\x59\x53\x2E\x44\x44\x46\x30\x31", 14, "EMV (pse)", "try hf emv commands" },
|
{ "\x31\x50\x41\x59\x2E\x53\x59\x53\x2E\x44\x44\x46\x30\x31", 14, "EMV (pse)", "hf emv" },
|
||||||
{ "\x32\x50\x41\x59\x2E\x53\x59\x53\x2E\x44\x44\x46\x30\x31", 14, "EMV (ppse)", "try hf emv commands" },
|
{ "\x32\x50\x41\x59\x2E\x53\x59\x53\x2E\x44\x44\x46\x30\x31", 14, "EMV (ppse)", "hf emv" },
|
||||||
{ "\x41\x44\x20\x46\x31", 5, "CIPURSE", "try hf cipurse commands" },
|
{ "\x41\x44\x20\x46\x31", 5, "CIPURSE", "hf cipurse" },
|
||||||
{ "\xd2\x76\x00\x00\x85\x01\x00", 7, "desfire", "try hf mfdes commands" },
|
{ "\xd2\x76\x00\x00\x85\x01\x00", 7, "desfire", "hf mfdes" },
|
||||||
};
|
};
|
||||||
|
|
||||||
// iso14a apdu input frame length
|
// iso14a apdu input frame length
|
||||||
|
@ -2142,9 +2142,10 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) {
|
||||||
return select_status;
|
return select_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
int infoHF14A4Applications(void) {
|
int infoHF14A4Applications(bool verbose) {
|
||||||
|
bool cardFound[ARRAYLEN(hintAIDList)] = {0};
|
||||||
bool ActivateField = true;
|
bool ActivateField = true;
|
||||||
bool found = false;
|
int found = 0;
|
||||||
for (int i = 0; i < ARRAYLEN(hintAIDList); i++) {
|
for (int i = 0; i < ARRAYLEN(hintAIDList); i++) {
|
||||||
uint16_t sw = 0;
|
uint16_t sw = 0;
|
||||||
uint8_t result[1024] = {0};
|
uint8_t result[1024] = {0};
|
||||||
|
@ -2156,22 +2157,37 @@ int infoHF14A4Applications(void) {
|
||||||
|
|
||||||
if (sw == 0x9000 || sw == 0x6283 || sw == 0x6285) {
|
if (sw == 0x9000 || sw == 0x6283 || sw == 0x6285) {
|
||||||
if (!found) {
|
if (!found) {
|
||||||
PrintAndLogEx(INFO, "----------------- " _CYAN_("Short AID search") " -----------------");
|
if (verbose)
|
||||||
found = true;
|
PrintAndLogEx(INFO, "----------------- " _CYAN_("Short AID search") " -----------------");
|
||||||
}
|
}
|
||||||
|
found++;
|
||||||
|
|
||||||
if (sw == 0x9000) {
|
if (sw == 0x9000) {
|
||||||
PrintAndLogEx(SUCCESS, "Application " _CYAN_("%s") " ( " _GREEN_("ok") " )", hintAIDList[i].desc);
|
if (verbose)
|
||||||
if (strlen(hintAIDList[i].hint))
|
PrintAndLogEx(SUCCESS, "Application " _CYAN_("%s") " ( " _GREEN_("ok") " )", hintAIDList[i].desc);
|
||||||
PrintAndLogEx(INFO, "%s", hintAIDList[i].hint);
|
cardFound[i] = true;
|
||||||
} else {
|
} else {
|
||||||
PrintAndLogEx(WARNING, "Application " _CYAN_("%s") " ( " _RED_("blocked") " )", hintAIDList[i].desc);
|
if (verbose)
|
||||||
|
PrintAndLogEx(WARNING, "Application " _CYAN_("%s") " ( " _RED_("blocked") " )", hintAIDList[i].desc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (found)
|
if (found) {
|
||||||
PrintAndLogEx(INFO, "---------------------------------------------------");
|
if (verbose)
|
||||||
|
PrintAndLogEx(INFO, "---------------------------------------------------");
|
||||||
|
else
|
||||||
|
PrintAndLogEx(INFO, "Short AID search:");
|
||||||
|
|
||||||
|
if (found >= ARRAYLEN(hintAIDList) - 1) {
|
||||||
|
PrintAndLogEx(HINT, "Hint: card answers to all AID. It maybe the latest revision of plus/desfire/ultralight card.");
|
||||||
|
} else {
|
||||||
|
for (int i = 0; i < ARRAYLEN(hintAIDList); i++) {
|
||||||
|
if (cardFound[i] && strlen(hintAIDList[i].hint))
|
||||||
|
PrintAndLogEx(HINT, "Hint: try " _YELLOW_("%s") " commands", hintAIDList[i].hint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DropField();
|
DropField();
|
||||||
return found;
|
return found;
|
||||||
|
|
|
@ -37,7 +37,7 @@ int CmdHF14ANdefRead(const char *Cmd);
|
||||||
int hf14a_getconfig(hf14a_config *config);
|
int hf14a_getconfig(hf14a_config *config);
|
||||||
int hf14a_setconfig(hf14a_config *config, bool verbose);
|
int hf14a_setconfig(hf14a_config *config, bool verbose);
|
||||||
int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search);
|
int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search);
|
||||||
int infoHF14A4Applications(void);
|
int infoHF14A4Applications(bool verbose);
|
||||||
const char *getTagInfo(uint8_t uid);
|
const char *getTagInfo(uint8_t uid);
|
||||||
int Hf14443_4aGetCardData(iso14a_card_select_t *card);
|
int Hf14443_4aGetCardData(iso14a_card_select_t *card);
|
||||||
int ExchangeAPDU14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen);
|
int ExchangeAPDU14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen);
|
||||||
|
|
|
@ -973,7 +973,7 @@
|
||||||
},
|
},
|
||||||
"help": {
|
"help": {
|
||||||
"command": "help",
|
"command": "help",
|
||||||
"description": "help use `<command> help` for details of a command prefs { edit client/device preferences... } -------- ----------------------- technology ----------------------- analyse { analyse utils... } data { plot window / data buffer manipulation... } emv { emv iso-14443 / iso-7816... } hf { high frequency commands... } hw { hardware commands... } lf { low frequency commands... } nfc { nfc commands... } reveng { crc calculations from reveng software... } smart { smart card iso-7816 commands... } script { scripting commands... } trace { trace manipulation... } wiegand { wiegand format manipulation... } -------- ----------------------- general ----------------------- clear clear screen hints turn hints on / off msleep add a pause in milliseconds rem add a text line in log file quit exit exit program [=] session log e:\\proxspace\\pm3/.proxmark3/logs/log_20210617.txt --------------------------------------------------------------------------------------- auto available offline: no run lf search / hf search / data plot / data save",
|
"description": "help use `<command> help` for details of a command prefs { edit client/device preferences... } -------- ----------------------- technology ----------------------- analyse { analyse utils... } data { plot window / data buffer manipulation... } emv { emv iso-14443 / iso-7816... } hf { high frequency commands... } hw { hardware commands... } lf { low frequency commands... } nfc { nfc commands... } reveng { crc calculations from reveng software... } smart { smart card iso-7816 commands... } script { scripting commands... } trace { trace manipulation... } wiegand { wiegand format manipulation... } -------- ----------------------- general ----------------------- clear clear screen hints turn hints on / off msleep add a pause in milliseconds rem add a text line in log file quit exit exit program [=] session log e:\\proxspace\\pm3/.proxmark3/logs/log_20210618.txt --------------------------------------------------------------------------------------- auto available offline: no run lf search / hf search / data plot / data save",
|
||||||
"notes": [
|
"notes": [
|
||||||
"auto"
|
"auto"
|
||||||
],
|
],
|
||||||
|
@ -4726,9 +4726,10 @@
|
||||||
],
|
],
|
||||||
"offline": true,
|
"offline": true,
|
||||||
"options": [
|
"options": [
|
||||||
"-h, --help this help"
|
"-h, --help this help",
|
||||||
|
"-v, --verbose verbose output"
|
||||||
],
|
],
|
||||||
"usage": "hf search [-h]"
|
"usage": "hf search [-hv]"
|
||||||
},
|
},
|
||||||
"hf seos help": {
|
"hf seos help": {
|
||||||
"command": "hf seos help",
|
"command": "hf seos help",
|
||||||
|
@ -9180,6 +9181,6 @@
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"commands_extracted": 570,
|
"commands_extracted": 570,
|
||||||
"extracted_by": "PM3Help2JSON v1.00",
|
"extracted_by": "PM3Help2JSON v1.00",
|
||||||
"extracted_on": "2021-06-17T10:40:34"
|
"extracted_on": "2021-06-18T09:04:45"
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue