mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-20 21:33:19 -07:00
Print keys remaining only every 10 seconds, and add estimated worst-case time
This commit is contained in:
parent
4792fbdf9b
commit
ed58af887c
1 changed files with 16 additions and 2 deletions
|
@ -23,6 +23,7 @@
|
||||||
#include "parity.h"
|
#include "parity.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "iso14443crc.h"
|
#include "iso14443crc.h"
|
||||||
|
#include "util_posix.h"
|
||||||
|
|
||||||
#include "mifare.h"
|
#include "mifare.h"
|
||||||
#include "mifare4.h"
|
#include "mifare4.h"
|
||||||
|
@ -343,6 +344,11 @@ int mfnested(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBlockNo,
|
||||||
|
|
||||||
int isOK = 1;
|
int isOK = 1;
|
||||||
|
|
||||||
|
uint64_t next_print_time = 0;
|
||||||
|
uint64_t start_time;
|
||||||
|
float brute_force_time;
|
||||||
|
float brute_force_per_second;
|
||||||
|
|
||||||
// flush queue
|
// flush queue
|
||||||
(void)WaitForResponseTimeout(CMD_ACK,NULL,100);
|
(void)WaitForResponseTimeout(CMD_ACK,NULL,100);
|
||||||
|
|
||||||
|
@ -465,9 +471,17 @@ int mfnested(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBlockNo,
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(resultKey, 0, 6);
|
memset(resultKey, 0, 6);
|
||||||
|
start_time = msclock();
|
||||||
|
next_print_time = start_time + 1 * 1000;
|
||||||
// The list may still contain several key candidates. Test each of them with mfCheckKeys
|
// The list may still contain several key candidates. Test each of them with mfCheckKeys
|
||||||
for (i = 0; i < statelists[0].len; i+=max_keys) {
|
for (i = 0; i < statelists[0].len; i+=max_keys) {
|
||||||
if (statelists[0].len > 1) PrintAndLog("Keys left to check: %d", statelists[0].len - i);
|
if (next_print_time <= msclock()) {
|
||||||
|
brute_force_per_second = ((float)i) / (((float)(msclock() - start_time)) / 1000.0);
|
||||||
|
brute_force_time = ((float)(statelists[0].len - i)) / brute_force_per_second;
|
||||||
|
next_print_time = msclock() + 10 * 1000;
|
||||||
|
PrintAndLog("| %d keys left | % 3.3f keys/sec | worst case % 4.1f seconds remaining |", statelists[0].len - i, brute_force_per_second, brute_force_time);
|
||||||
|
}
|
||||||
|
|
||||||
if ((i+max_keys) >= statelists[0].len)
|
if ((i+max_keys) >= statelists[0].len)
|
||||||
max_keys = statelists[0].len - i;
|
max_keys = statelists[0].len - i;
|
||||||
|
|
||||||
|
@ -493,7 +507,7 @@ int mfnested(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBlockNo,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isOK && statelists[0].len != 1)
|
if (!isOK && statelists[0].len != 1)
|
||||||
PrintAndLog("Key found after checking %d keys\n", i+max_keys);
|
PrintAndLog("Key found in %0.2f seconds after checking %d keys\n", ((float)(msclock() - start_time)) / 1000.0, i+max_keys);
|
||||||
|
|
||||||
free(statelists[0].head.slhead);
|
free(statelists[0].head.slhead);
|
||||||
free(statelists[1].head.slhead);
|
free(statelists[1].head.slhead);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue