This commit is contained in:
iceman1001 2020-03-26 20:36:38 +01:00
commit 063b393eba
2 changed files with 15 additions and 13 deletions

View file

@ -42,7 +42,7 @@ static int CmdHFMFPInfo(const char *Cmd) {
PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "");
PrintAndLogEx(INFO, "-- Mifare Plus Tag Information ------------------------------"); PrintAndLogEx(INFO, "-- Mifare Plus Tag Information ------------------------------");
PrintAndLogEx(INFO, "-------------------------------------------------------------"); PrintAndLogEx(INFO, "-------------------------------------------------------------");
// info about 14a part // info about 14a part
infoHF14A(false, false, false); infoHF14A(false, false, false);
@ -61,13 +61,12 @@ static int CmdHFMFPInfo(const char *Cmd) {
PrintAndLogEx(INFO, "-------------------------------------------------------------"); PrintAndLogEx(INFO, "-------------------------------------------------------------");
PrintAndLogEx(INFO, " Fingerprint"); PrintAndLogEx(INFO, " Fingerprint");
// MIFARE Type Identification Procedure // MIFARE Type Identification Procedure
// https://www.nxp.com/docs/en/application-note/AN10833.pdf // https://www.nxp.com/docs/en/application-note/AN10833.pdf
uint16_t ATQA = card.atqa[0] + (card.atqa[1] << 8); uint16_t ATQA = card.atqa[0] + (card.atqa[1] << 8);
bool isPlus = false; bool isPlus = false;
if (ATQA == 0x0004) { if (ATQA == 0x0004) {
PrintAndLogEx(INFO, " ATQA - " _GREEN_("Mifare Plus 2K") " (4b UID)"); PrintAndLogEx(INFO, " ATQA - " _GREEN_("Mifare Plus 2K") " (4b UID)");
isPlus = true; isPlus = true;
@ -131,25 +130,25 @@ static int CmdHFMFPInfo(const char *Cmd) {
} }
} }
// How do we detect SL0 / SL1 / SL2 / SL3 modes?!? // How do we detect SL0 / SL1 / SL2 / SL3 modes?!?
PrintAndLogEx(INFO, "Security Level (SL)"); PrintAndLogEx(INFO, "Security Level (SL)");
switch(SLmode) { switch(SLmode) {
case 0: case 0:
PrintAndLogEx(INFO, "SL 0: initial delivery configuration, used for card personalization"); PrintAndLogEx(INFO, "SL 0: initial delivery configuration, used for card personalization");
break; break;
case 1: case 1:
PrintAndLogEx(INFO, "SL 1: backwards functional compatibility mode (with MIFARE Classic 1K / 4K) with an optional AES authentication"); PrintAndLogEx(INFO, "SL 1: backwards functional compatibility mode (with MIFARE Classic 1K / 4K) with an optional AES authentication");
break; break;
case 2: case 2:
PrintAndLogEx(INFO, "SL 2: 3-Pass Authentication based on AES followed by MIFARE CRYPTO1 authentication, communication secured by MIFARE CRYPTO1"); PrintAndLogEx(INFO, "SL 2: 3-Pass Authentication based on AES followed by MIFARE CRYPTO1 authentication, communication secured by MIFARE CRYPTO1");
break; break;
case 3: case 3:
PrintAndLogEx(INFO, "SL 3: 3-Pass authentication based on AES, data manipulation commands secured by AES encryption and an AES based MACing method."); PrintAndLogEx(INFO, "SL 3: 3-Pass authentication based on AES, data manipulation commands secured by AES encryption and an AES based MACing method.");
break; break;
default: default:
break; break;
} }
if (SLmode != 0xFF) if (SLmode != 0xFF)
PrintAndLogEx(SUCCESS, "\tMifare Plus SL mode: " _YELLOW_("SL%d"), SLmode); PrintAndLogEx(SUCCESS, "\tMifare Plus SL mode: " _YELLOW_("SL%d"), SLmode);
else else
@ -966,9 +965,9 @@ static int CmdHFMFPChk(const char *Cmd) {
if (foundKeys[0][sector][0] || foundKeys[1][sector][0]) { if (foundKeys[0][sector][0] || foundKeys[1][sector][0]) {
if (!printedHeader) { if (!printedHeader) {
PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "");
PrintAndLogEx(INFO, ".------.--------------------------------.--------------------------------."); PrintAndLogEx(INFO, "-------+--------------------------------+---------------------------------");
PrintAndLogEx(INFO, "|sector| key A | key B |"); PrintAndLogEx(INFO, "|sector| key A | key B |");
PrintAndLogEx(INFO, "|------|--------------------------------|--------------------------------|"); PrintAndLogEx(INFO, "|------+--------------------------------+--------------------------------|");
printedHeader = true; printedHeader = true;
} }
PrintAndLogEx(INFO, "| %02d |%32s|%32s|", PrintAndLogEx(INFO, "| %02d |%32s|%32s|",
@ -980,7 +979,7 @@ static int CmdHFMFPChk(const char *Cmd) {
if (!printedHeader) if (!printedHeader)
PrintAndLogEx(INFO, "No keys found("); PrintAndLogEx(INFO, "No keys found(");
else else
PrintAndLogEx(INFO, "'------'--------------------------------'--------------------------------'\n"); PrintAndLogEx(INFO, "'------+--------------------------------+--------------------------------'\n");
// save keys to json // save keys to json
if ((jsonnamelen > 0) && printedHeader) { if ((jsonnamelen > 0) && printedHeader) {

View file

@ -25,3 +25,6 @@ eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
15141312111009080706050403020100 15141312111009080706050403020100
0f0e0d0c0b0a09080706050403020100 0f0e0d0c0b0a09080706050403020100
100f0e0d0c0b0a090807060504030201 100f0e0d0c0b0a090807060504030201
404142434445464748494a4b4c4d4e4f
303132333435363738393a3b3c3d3e3f