ADD: @marshmellow42 's changes to "hf mfu *" ,
ADD: @marshmellow42 's changes to "hf mf sim", ADD: @pwpiwi 's parity files was missing.
This commit is contained in:
@@ -1195,15 +1195,21 @@ int CmdHF14AMf1kSim(const char *Cmd)
|
||||
|
||||
if(flags & FLAG_INTERACTIVE)
|
||||
{
|
||||
PrintAndLog("Press pm3-button to abort simulation");
|
||||
|
||||
uint8_t data[40];
|
||||
uint8_t key[6];
|
||||
|
||||
UsbCommand resp;
|
||||
PrintAndLog("Press pm3-button or send another cmd to abort simulation");
|
||||
//while(! WaitForResponseTimeout(CMD_ACK,&resp,1500)) {
|
||||
//We're waiting only 1.5 s at a time, otherwise we get the
|
||||
// annoying message about "Waiting for a response... "
|
||||
//}
|
||||
while(!ukbhit() ){
|
||||
if ( WaitForResponseTimeout(CMD_ACK,&resp,1500) ) {
|
||||
if ( (resp.arg[0] & 0xffff) == CMD_SIMULATE_MIFARE_CARD ){
|
||||
if (!WaitForResponseTimeout(CMD_ACK,&resp,1500) ) continue;
|
||||
|
||||
if ( !(flags & FLAG_NR_AR_ATTACK) ) break;
|
||||
if ( (resp.arg[0] & 0xffff) != CMD_SIMULATE_MIFARE_CARD ) break;
|
||||
|
||||
memset(data, 0x00, sizeof(data));
|
||||
memset(key, 0x00, sizeof(key));
|
||||
int len = (resp.arg[1] > sizeof(data)) ? sizeof(data) : resp.arg[1];
|
||||
@@ -1213,8 +1219,8 @@ int CmdHF14AMf1kSim(const char *Cmd)
|
||||
uint64_t corr_uid = 0;
|
||||
if ( memcmp(data, "\x00\x00\x00\x00", 4) == 0 ) {
|
||||
corr_uid = (data[3] << 24) | (data[2] << 16) | (data[1] << 8) | data[0];
|
||||
}
|
||||
else {
|
||||
tryMfk32(corr_uid, data, key);
|
||||
} else {
|
||||
corr_uid |= (uint64_t)data[2] << 48;
|
||||
corr_uid |= (uint64_t)data[1] << 40;
|
||||
corr_uid |= (uint64_t)data[0] << 32;
|
||||
@@ -1222,14 +1228,12 @@ int CmdHF14AMf1kSim(const char *Cmd)
|
||||
corr_uid |= data[6] << 16;
|
||||
corr_uid |= data[5] << 8;
|
||||
corr_uid |= data[4];
|
||||
tryMfk64(corr_uid, data, key);
|
||||
}
|
||||
tryMfk32(corr_uid, data, key);
|
||||
//tryMfk64(corr_uid, data, key);
|
||||
PrintAndLog("--");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1334,7 +1338,7 @@ int CmdHF14AMfELoad(const char *Cmd)
|
||||
|
||||
if ( ctmp == 'h' || ctmp == 'H' || ctmp == 0x00) {
|
||||
PrintAndLog("It loads emul dump from the file `filename.eml`");
|
||||
PrintAndLog("Usage: hf mf eload [card memory] <file name w/o `.eml`>");
|
||||
PrintAndLog("Usage: hf mf eload [card memory] <file name w/o `.eml`> [numblocks]");
|
||||
PrintAndLog(" [card memory]: 0 = 320 bytes (Mifare Mini), 1 = 1K (default), 2 = 2K, 4 = 4K, u = UL");
|
||||
PrintAndLog("");
|
||||
PrintAndLog(" sample: hf mf eload filename");
|
||||
@@ -1348,13 +1352,15 @@ int CmdHF14AMfELoad(const char *Cmd)
|
||||
case '\0': numBlocks = 16*4; break;
|
||||
case '2' : numBlocks = 32*4; break;
|
||||
case '4' : numBlocks = 256; break;
|
||||
case 'U' : // fall through , NTAG 215 has 135blocks a 540 bytes.
|
||||
case 'u' : numBlocks = 135; blockWidth = 8; break;
|
||||
case 'U' : // fall through
|
||||
case 'u' : numBlocks = 255; blockWidth = 8; break;
|
||||
default: {
|
||||
numBlocks = 16*4;
|
||||
nameParamNo = 0;
|
||||
}
|
||||
}
|
||||
uint32_t numblk2 = param_get32ex(Cmd,2,0,10);
|
||||
if (numblk2 > 0) numBlocks = numblk2;
|
||||
|
||||
len = param_getstr(Cmd,nameParamNo,filename);
|
||||
|
||||
@@ -1816,7 +1822,7 @@ int CmdHF14AMfCGetBlk(const char *Cmd) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
PrintAndLog("data:%s", sprint_hex(data, sizeof(data)));
|
||||
PrintAndLog("data: %s", sprint_hex(data, sizeof(data)));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user