mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-09-21 07:46:12 +08:00
fixup code
This commit is contained in:
parent
f6c56cd204
commit
236e8f7cc6
|
@ -19,6 +19,7 @@
|
||||||
#define GOOD_BYTES_REQUIRED 13 // default 28, could be smaller == faster
|
#define GOOD_BYTES_REQUIRED 13 // default 28, could be smaller == faster
|
||||||
#define MIN_NONCES_REQUIRED 4000 // 4000-5000 could be good
|
#define MIN_NONCES_REQUIRED 4000 // 4000-5000 could be good
|
||||||
#define NONCES_TRIGGER 2500 // every 2500 nonces check if we can crack the key
|
#define NONCES_TRIGGER 2500 // every 2500 nonces check if we can crack the key
|
||||||
|
#define CRACKING_THRESHOLD 39.00f // as 2^39
|
||||||
|
|
||||||
#define END_OF_LIST_MARKER 0xFFFFFFFF
|
#define END_OF_LIST_MARKER 0xFFFFFFFF
|
||||||
|
|
||||||
|
@ -115,7 +116,6 @@ static statelist_t *candidates = NULL;
|
||||||
|
|
||||||
bool thread_check_started = false;
|
bool thread_check_started = false;
|
||||||
bool thread_check_done = false;
|
bool thread_check_done = false;
|
||||||
bool cracking = false;
|
|
||||||
bool field_off = false;
|
bool field_off = false;
|
||||||
|
|
||||||
pthread_t thread_check;
|
pthread_t thread_check;
|
||||||
|
@ -762,7 +762,6 @@ static int acquire_nonces(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_
|
||||||
UsbCommand resp;
|
UsbCommand resp;
|
||||||
|
|
||||||
field_off = false;
|
field_off = false;
|
||||||
cracking = false;
|
|
||||||
thread_check_started = false;
|
thread_check_started = false;
|
||||||
thread_check_done = false;
|
thread_check_done = false;
|
||||||
|
|
||||||
|
@ -771,7 +770,7 @@ static int acquire_nonces(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_
|
||||||
clearCommandBuffer();
|
clearCommandBuffer();
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (cracking) {
|
if (thread_check_started && !thread_check_done) {
|
||||||
sleep(3);
|
sleep(3);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1373,7 +1372,7 @@ static bool generate_candidates(uint16_t sum_a0, uint16_t sum_a8)
|
||||||
fprintf(fstats, "%1.1f;", 0.0);
|
fprintf(fstats, "%1.1f;", 0.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (kcalc < 39.00f) return true;
|
if (kcalc < CRACKING_THRESHOLD) return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1650,14 +1649,12 @@ static void* check_thread()
|
||||||
num_good_first_bytes = estimate_second_byte_sum();
|
num_good_first_bytes = estimate_second_byte_sum();
|
||||||
|
|
||||||
clock_t time1 = clock();
|
clock_t time1 = clock();
|
||||||
cracking = generate_candidates(first_byte_Sum, nonces[best_first_bytes[0]].Sum8_guess);
|
bool cracking = generate_candidates(first_byte_Sum, nonces[best_first_bytes[0]].Sum8_guess);
|
||||||
time1 = clock() - time1;
|
time1 = clock() - time1;
|
||||||
if ( time1 > 0 ) PrintAndLog("Time for generating key candidates list: %1.0f seconds", ((float)time1)/CLOCKS_PER_SEC);
|
if (time1 > 0) PrintAndLog("Time for generating key candidates list: %1.0f seconds", ((float)time1)/CLOCKS_PER_SEC);
|
||||||
if (known_target_key != -1) brute_force();
|
|
||||||
|
|
||||||
if (cracking) {
|
if (cracking || known_target_key != -1) {
|
||||||
field_off = brute_force(); // switch off field with next SendCommand and then finish
|
field_off = brute_force(); // switch off field with next SendCommand and then finish
|
||||||
cracking = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
thread_check_done = true;
|
thread_check_done = true;
|
||||||
|
@ -1805,13 +1802,23 @@ int mfnestedhard(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBloc
|
||||||
fstats = NULL;
|
fstats = NULL;
|
||||||
} else {
|
} else {
|
||||||
init_nonce_memory();
|
init_nonce_memory();
|
||||||
if (nonce_file_read) { // use pre-acquired data from file nonces.bin
|
if (nonce_file_read) { // use pre-acquired data from file nonces.bin
|
||||||
if (read_nonce_file() != 0) {
|
if (read_nonce_file() != 0) {
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
Check_for_FilterFlipProperties();
|
Check_for_FilterFlipProperties();
|
||||||
num_good_first_bytes = MIN(estimate_second_byte_sum(), GOOD_BYTES_REQUIRED);
|
num_good_first_bytes = MIN(estimate_second_byte_sum(), GOOD_BYTES_REQUIRED);
|
||||||
} else { // acquire nonces.
|
PrintAndLog("Number of first bytes with confidence > %2.1f%%: %d", CONFIDENCE_THRESHOLD*100.0, num_good_first_bytes);
|
||||||
|
|
||||||
|
clock_t time1 = clock();
|
||||||
|
bool cracking = generate_candidates(first_byte_Sum, nonces[best_first_bytes[0]].Sum8_guess);
|
||||||
|
time1 = clock() - time1;
|
||||||
|
if (time1 > 0)
|
||||||
|
PrintAndLog("Time for generating key candidates list: %1.0f seconds", ((float)time1)/CLOCKS_PER_SEC);
|
||||||
|
|
||||||
|
if (cracking)
|
||||||
|
brute_force();
|
||||||
|
} else { // acquire nonces.
|
||||||
uint16_t is_OK = acquire_nonces(blockNo, keyType, key, trgBlockNo, trgKeyType, nonce_file_write, slow);
|
uint16_t is_OK = acquire_nonces(blockNo, keyType, key, trgBlockNo, trgKeyType, nonce_file_write, slow);
|
||||||
if (is_OK != 0) {
|
if (is_OK != 0) {
|
||||||
return is_OK;
|
return is_OK;
|
||||||
|
@ -1834,16 +1841,6 @@ int mfnestedhard(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBloc
|
||||||
// best_first_bytes[8],
|
// best_first_bytes[8],
|
||||||
// best_first_bytes[9] );
|
// best_first_bytes[9] );
|
||||||
|
|
||||||
//PrintAndLog("Number of first bytes with confidence > %2.1f%%: %d", CONFIDENCE_THRESHOLD*100.0, num_good_first_bytes);
|
|
||||||
|
|
||||||
//clock_t time1 = clock();
|
|
||||||
//generate_candidates(first_byte_Sum, nonces[best_first_bytes[0]].Sum8_guess);
|
|
||||||
//time1 = clock() - time1;
|
|
||||||
//if ( time1 > 0 )
|
|
||||||
//PrintAndLog("Time for generating key candidates list: %1.0f seconds", ((float)time1)/CLOCKS_PER_SEC);
|
|
||||||
|
|
||||||
//brute_force();
|
|
||||||
|
|
||||||
free_nonces_memory();
|
free_nonces_memory();
|
||||||
free_statelist_cache();
|
free_statelist_cache();
|
||||||
free_candidates_memory(candidates);
|
free_candidates_memory(candidates);
|
||||||
|
|
Loading…
Reference in a new issue