mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-11-11 01:55:38 +08:00
-Added .history to the svn:ignore property
-Added "hf 14a cuids" command to collect multiple ISO14443-A UIDs from one card in a batch -The command takes one parameter (the number of UIDs to collect) -This can be useful to analyze the RNGs of cards that generate random UIDs (e.g. MRTDs)
This commit is contained in:
parent
e50d95165c
commit
db22dfe6ff
1 changed files with 38 additions and 0 deletions
|
@ -315,6 +315,43 @@ int CmdHF14AReader(const char *Cmd)
|
|||
return resp->arg[0];
|
||||
}
|
||||
|
||||
// Collect ISO14443 Type A UIDs
|
||||
int CmdHF14ACUIDs(const char *Cmd)
|
||||
{
|
||||
// requested number of UIDs
|
||||
int n = atoi(Cmd);
|
||||
// collect at least 1 (e.g. if no parameter was given)
|
||||
n = n > 0 ? n : 1;
|
||||
|
||||
PrintAndLog("Collecting %d UIDs", n);
|
||||
PrintAndLog("Start: %u", time(NULL));
|
||||
// repeat n times
|
||||
for (int i = 0; i < n; i++) {
|
||||
// execute anticollision procedure
|
||||
UsbCommand c = {CMD_READER_ISO_14443a, {ISO14A_CONNECT, 0, 0}};
|
||||
SendCommand(&c);
|
||||
UsbCommand *resp = WaitForResponse(CMD_ACK);
|
||||
uint8_t *uid = resp->d.asBytes;
|
||||
iso14a_card_select_t *card = (iso14a_card_select_t *)(uid + 12);
|
||||
|
||||
// check if command failed
|
||||
if (resp->arg[0] == 0) {
|
||||
PrintAndLog("Card select failed.");
|
||||
} else {
|
||||
// check if UID is 4 bytes
|
||||
if ((card->atqa[1] & 0xC0) == 0) {
|
||||
PrintAndLog("%02X%02X%02X%02X",
|
||||
*uid, *(uid + 1), *(uid + 2), *(uid + 3));
|
||||
} else {
|
||||
PrintAndLog("UID longer than 4 bytes");
|
||||
}
|
||||
}
|
||||
}
|
||||
PrintAndLog("End: %u", time(NULL));
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
// ## simulate iso14443a tag
|
||||
// ## greg - added ability to specify tag UID
|
||||
int CmdHF14ASim(const char *Cmd)
|
||||
|
@ -429,6 +466,7 @@ static command_t CommandTable[] =
|
|||
{"help", CmdHelp, 1, "This help"},
|
||||
{"list", CmdHF14AList, 0, "List ISO 14443a history"},
|
||||
{"reader", CmdHF14AReader, 0, "Act like an ISO14443 Type A reader"},
|
||||
{"cuids", CmdHF14ACUIDs, 0, "<n> Collect n>0 ISO14443 Type A UIDs in one go"},
|
||||
{"sim", CmdHF14ASim, 0, "<UID> -- Fake ISO 14443a tag"},
|
||||
{"snoop", CmdHF14ASnoop, 0, "Eavesdrop ISO 14443 Type A"},
|
||||
{NULL, NULL, 0, NULL}
|
||||
|
|
Loading…
Reference in a new issue