X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/60daed79dbd2fd4da6e60d4e8dd50914075ff212..4b8ee00f0dfd98dcaaecaaae108355893a90c04c:/client/cmdhfmf.c?ds=sidebyside diff --git a/client/cmdhfmf.c b/client/cmdhfmf.c index abc88b86..0caa60b9 100644 --- a/client/cmdhfmf.c +++ b/client/cmdhfmf.c @@ -804,7 +804,7 @@ int CmdHF14AMfNestedHard(const char *Cmd) char ctmp; ctmp = param_getchar(Cmd, 0); - if (ctmp != 'R' && ctmp != 'r' && strlen(Cmd) < 20) { + if (ctmp != 'R' && ctmp != 'r' && ctmp != 'T' && ctmp != 't' && strlen(Cmd) < 20) { PrintAndLog("Usage:"); PrintAndLog(" hf mf hardnested "); PrintAndLog(" [known target key (12 hex symbols)] [w] [s]"); @@ -829,15 +829,17 @@ int CmdHF14AMfNestedHard(const char *Cmd) bool nonce_file_read = false; bool nonce_file_write = false; bool slow = false; + int tests = 0; + if (ctmp == 'R' || ctmp == 'r') { nonce_file_read = true; if (!param_gethex(Cmd, 1, trgkey, 12)) { know_target_key = true; } - + } else if (ctmp == 'T' || ctmp == 't') { + tests = param_get32ex(Cmd, 1, 100, 10); } else { - blockNo = param_get8(Cmd, 0); ctmp = param_getchar(Cmd, 1); if (ctmp != 'a' && ctmp != 'A' && ctmp != 'b' && ctmp != 'B') { @@ -883,15 +885,16 @@ int CmdHF14AMfNestedHard(const char *Cmd) } } - PrintAndLog("--target block no:%3d, target key type:%c, known target key: 0x%02x%02x%02x%02x%02x%02x%s, file action: %s, Slow: %s ", + PrintAndLog("--target block no:%3d, target key type:%c, known target key: 0x%02x%02x%02x%02x%02x%02x%s, file action: %s, Slow: %s, Tests: %d ", trgBlockNo, trgKeyType?'B':'A', trgkey[0], trgkey[1], trgkey[2], trgkey[3], trgkey[4], trgkey[5], know_target_key?"":" (not set)", nonce_file_write?"write":nonce_file_read?"read":"none", - slow?"Yes":"No"); + slow?"Yes":"No", + tests); - int16_t isOK = mfnestedhard(blockNo, keyType, key, trgBlockNo, trgKeyType, know_target_key?trgkey:NULL, nonce_file_read, nonce_file_write, slow); + int16_t isOK = mfnestedhard(blockNo, keyType, key, trgBlockNo, trgKeyType, know_target_key?trgkey:NULL, nonce_file_read, nonce_file_write, slow, tests); if (isOK) { switch (isOK) { @@ -988,6 +991,7 @@ int CmdHF14AMfChk(const char *Cmd) break; default: PrintAndLog("Key type must be A , B or ?"); + free(keyBlock); return 1; }; @@ -1039,6 +1043,7 @@ int CmdHF14AMfChk(const char *Cmd) if (!p) { PrintAndLog("Cannot allocate memory for defKeys"); free(keyBlock); + free(f); return 2; } keyBlock = p; @@ -1224,10 +1229,10 @@ int CmdHF14AMf1kSim(const char *Cmd) corr_uid |= (uint64_t)data[2] << 48; corr_uid |= (uint64_t)data[1] << 40; corr_uid |= (uint64_t)data[0] << 32; - corr_uid |= data[7] << 24; - corr_uid |= data[6] << 16; - corr_uid |= data[5] << 8; - corr_uid |= data[4]; + corr_uid |= (uint64_t)data[7] << 24; + corr_uid |= (uint64_t)data[6] << 16; + corr_uid |= (uint64_t)data[5] << 8; + corr_uid |= (uint64_t)data[4]; tryMfk64(corr_uid, data, key); } PrintAndLog("--");