Bugfixes:

- Byteorder was wrong when displaying ATQA in hf 14a read
- 7 Byte UIDs were truncated to 4 Bytes when displaying in hf 14a cuids
This commit is contained in:
pwpiwi 2014-06-26 07:57:49 +02:00
parent cba867f202
commit 72b1090acf

View file

@ -196,7 +196,7 @@ int CmdHF14AReader(const char *Cmd)
return 0; return 0;
} }
PrintAndLog("ATQA : %02x %02x", card->atqa[0], card->atqa[1]); PrintAndLog("ATQA : %02x %02x", card->atqa[1], card->atqa[0]);
PrintAndLog(" UID : %s", sprint_hex(card->uid, card->uidlen)); PrintAndLog(" UID : %s", sprint_hex(card->uid, card->uidlen));
PrintAndLog(" SAK : %02x [%d]", card->sak, resp.arg[0]); PrintAndLog(" SAK : %02x [%d]", card->sak, resp.arg[0]);
@ -357,23 +357,20 @@ int CmdHF14ACUIDs(const char *Cmd)
UsbCommand c = {CMD_READER_ISO_14443a, {ISO14A_CONNECT, 0, 0}}; UsbCommand c = {CMD_READER_ISO_14443a, {ISO14A_CONNECT, 0, 0}};
SendCommand(&c); SendCommand(&c);
UsbCommand resp; UsbCommand resp;
WaitForResponse(CMD_ACK,&resp); WaitForResponse(CMD_ACK,&resp);
uint8_t *uid = resp.d.asBytes; iso14a_card_select_t *card = (iso14a_card_select_t *) resp.d.asBytes;
iso14a_card_select_t *card = (iso14a_card_select_t *)(uid + 12);
// check if command failed // check if command failed
if (resp.arg[0] == 0) { if (resp.arg[0] == 0) {
PrintAndLog("Card select failed."); PrintAndLog("Card select failed.");
} else { } else {
// check if UID is 4 bytes char uid_string[20];
if ((card->atqa[1] & 0xC0) == 0) { for (uint16_t i = 0; i < card->uidlen; i++) {
PrintAndLog("%02X%02X%02X%02X", sprintf(&uid_string[2*i], "%02X", card->uid[i]);
*uid, *(uid + 1), *(uid + 2), *(uid + 3));
} else {
PrintAndLog("UID longer than 4 bytes");
} }
PrintAndLog("%s", uid_string);
} }
} }
PrintAndLog("End: %u", time(NULL)); PrintAndLog("End: %u", time(NULL));