ADD: @marshmellow42's decrypt crypto-1 method,

ADD:  @piwi's latest commit to PM3 Master, aiming at the WDR in "hf mf mifare".
This commit is contained in:
iceman1001 2015-10-11 09:07:29 +02:00
commit 3bc7b13d23
6 changed files with 99 additions and 31 deletions

View file

@ -59,7 +59,8 @@ start:
case -1 : PrintAndLog("Button pressed. Aborted.\n"); break;
case -2 : PrintAndLog("Card is not vulnerable to Darkside attack (doesn't send NACK on authentication requests).\n"); break;
case -3 : PrintAndLog("Card is not vulnerable to Darkside attack (its random number generator is not predictable).\n"); break;
case -4 : PrintAndLog("The card's random number generator is vulnerable but behaves somewhat weird (Mifare clone?). This needs to be fixed.\n"); break;
case -4 : PrintAndLog("Card is not vulnerable to Darkside attack (its random number generator seems to be based on the wellknown");
PrintAndLog("generating polynomial with 16 effective bits only, but shows unexpected behaviour.\n"); break;
default: ;
}
break;
@ -1983,9 +1984,21 @@ int CmdHF14AMfSniff(const char *Cmd){
//needs nt, ar, at, Data to decrypt
int CmdDecryptTraceCmds(const char *Cmd){
uint8_t data[50];
uint32_t nt = param_get32ex(Cmd,0,0,16);
uint32_t ar_enc = param_get32ex(Cmd,1,0,16);
uint32_t at_enc = param_get32ex(Cmd,2,0,16);
int len = 0;
param_gethex_ex(Cmd,3,data,&len);
return tryDecryptWord(param_get32ex(Cmd,0,0,16),param_get32ex(Cmd,1,0,16),param_get32ex(Cmd,2,0,16),data,len/2);
param_gethex_ex(Cmd, 3, data, &len);
len /= 2;
int limit = sizeof(data) / 2;
if ( len >= limit )
len = limit;
return tryDecryptWord( nt, ar_enc, at_enc, data, len);
}
static command_t CommandTable[] =