diff --git a/armsrc/mifaredesfire.c b/armsrc/mifaredesfire.c index b71ab2305..b59a8fbe0 100644 --- a/armsrc/mifaredesfire.c +++ b/armsrc/mifaredesfire.c @@ -110,7 +110,13 @@ void MifareDesfireGetInformation(){ OnError(1); return; } - + + if ( card.uidlen != 7 ) { + if (MF_DBGLEVEL >= MF_DBG_ERROR) Dbprintf("Wrong UID size. Expected 7byte got %d", card.uidlen); + OnError(2); + return; + } + memcpy(dataout, card.uid, 7); LED_A_ON(); @@ -123,7 +129,7 @@ void MifareDesfireGetInformation(){ len = DesfireAPDU(cmd, cmd_len, resp); if ( !len ) { print_result("ERROR <--: ", resp, len); - OnError(2); + OnError(3); return; } @@ -136,7 +142,7 @@ void MifareDesfireGetInformation(){ len = DesfireAPDU(cmd, cmd_len, resp); if ( !len ) { print_result("ERROR <--: ", resp, len); - OnError(2); + OnError(3); return; } @@ -148,7 +154,7 @@ void MifareDesfireGetInformation(){ len = DesfireAPDU(cmd, cmd_len, resp); if ( !len ) { print_result("ERROR <--: ", resp, len); - OnError(2); + OnError(3); return; } @@ -431,7 +437,7 @@ void MifareDES_Auth1(uint8_t mode, uint8_t algo, uint8_t keyno, uint8_t *datain AesCtx ctx; if ( AesCtxIni(&ctx, IV, key->data, KEY128, CBC) < 0 ){ if( MF_DBGLEVEL >= 4) { - Dbprintf("AES context failed to init"); + DbpString("AES context failed to init"); } OnError(7); return; diff --git a/client/cmdhfmfdes.c b/client/cmdhfmfdes.c index 2da7c3f2b..331c9d2e2 100644 --- a/client/cmdhfmfdes.c +++ b/client/cmdhfmfdes.c @@ -145,7 +145,15 @@ int CmdHF14ADesInfo(const char *Cmd){ } uint8_t isOK = resp.arg[0] & 0xff; if ( !isOK ){ - PrintAndLog("Command unsuccessful"); + switch ( resp.arg[1] ) { + case 1: + PrintAndLog("Can't select card"); break; + case 2: + PrintAndLog("Card is most likely not Desfire. Its UID has wrong size"); break; + case 3: + default: + PrintAndLog("Command unsuccessful"); break; + } return 0; } PrintAndLog("");