mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-09-20 15:26:13 +08:00
hf mf hardnested - NUM_SUMS is 19, making loop iterator smaller
This commit is contained in:
parent
078a28550f
commit
ba8cd68942
|
@ -575,7 +575,7 @@ static void init_nonce_memory(void) {
|
|||
nonces[i].num = 0;
|
||||
nonces[i].Sum = 0;
|
||||
nonces[i].first = NULL;
|
||||
for (uint16_t j = 0; j < NUM_SUMS; j++) {
|
||||
for (uint8_t j = 0; j < NUM_SUMS; j++) {
|
||||
nonces[i].sum_a8_guess[j].sum_a8_idx = j;
|
||||
nonces[i].sum_a8_guess[j].prob = 0.0;
|
||||
}
|
||||
|
@ -679,7 +679,7 @@ static float sum_probability(uint16_t i_K, uint16_t n, uint16_t k) {
|
|||
double p_T_is_k_when_S_is_K = p_hypergeometric(i_K, n, k);
|
||||
double p_S_is_K = p_K[i_K];
|
||||
double p_T_is_k = 0;
|
||||
for (uint16_t i = 0; i < NUM_SUMS; i++) {
|
||||
for (uint8_t i = 0; i < NUM_SUMS; i++) {
|
||||
p_T_is_k += p_K[i] * p_hypergeometric(i, n, k);
|
||||
}
|
||||
return (p_T_is_k_when_S_is_K * p_S_is_K / p_T_is_k);
|
||||
|
@ -1044,7 +1044,7 @@ static void estimate_sum_a8(void) {
|
|||
if (first_byte_num == 256) {
|
||||
for (uint16_t i = 0; i < 256; i++) {
|
||||
if (nonces[i].sum_a8_guess_dirty) {
|
||||
for (uint16_t j = 0; j < NUM_SUMS; j++) {
|
||||
for (uint8_t j = 0; j < NUM_SUMS; j++) {
|
||||
uint16_t sum_a8_idx = nonces[i].sum_a8_guess[j].sum_a8_idx;
|
||||
nonces[i].sum_a8_guess[j].prob = sum_probability(sum_a8_idx, nonces[i].num, nonces[i].Sum);
|
||||
}
|
||||
|
@ -1102,7 +1102,7 @@ static int read_nonce_file(char *filename) {
|
|||
sprintf(progress_string, "Target Block=%d, Keytype=%c", trgBlockNo, trgKeyType == 0 ? 'A' : 'B');
|
||||
hardnested_print_progress(num_acquired_nonces, progress_string, (float)(1LL << 47), 0);
|
||||
|
||||
for (uint16_t i = 0; i < NUM_SUMS; i++) {
|
||||
for (uint8_t i = 0; i < NUM_SUMS; i++) {
|
||||
if (first_byte_Sum == sums[i]) {
|
||||
first_byte_Sum = i;
|
||||
break;
|
||||
|
@ -1152,14 +1152,20 @@ __attribute__((force_align_arg_pointer))
|
|||
return NULL;
|
||||
}
|
||||
for (uint16_t i = first_byte; i <= last_byte; i++) {
|
||||
|
||||
if (nonces[i].BitFlips[bitflip] == 0 && nonces[i].BitFlips[bitflip ^ 0x100] == 0
|
||||
&& nonces[i].first != NULL && nonces[i ^ (bitflip & 0xff)].first != NULL) {
|
||||
|
||||
uint8_t parity1 = (nonces[i].first->par_enc) >> 3; // parity of first byte
|
||||
uint8_t parity2 = (nonces[i ^ (bitflip & 0xff)].first->par_enc) >> 3; // parity of nonce with bits flipped
|
||||
|
||||
if ((parity1 == parity2 && !(bitflip & 0x100)) // bitflip
|
||||
|| (parity1 != parity2 && (bitflip & 0x100))) { // not bitflip
|
||||
|
||||
nonces[i].BitFlips[bitflip] = 1;
|
||||
|
||||
for (odd_even_t odd_even = EVEN_STATE; odd_even <= ODD_STATE; odd_even++) {
|
||||
|
||||
if (bitflip_bitarrays[odd_even][bitflip] != NULL) {
|
||||
uint32_t old_count = nonces[i].num_states_bitarray[odd_even];
|
||||
nonces[i].num_states_bitarray[odd_even] = count_bitarray_AND(nonces[i].states_bitarray[odd_even], bitflip_bitarrays[odd_even][bitflip]);
|
||||
|
@ -1344,7 +1350,7 @@ static void simulate_acquire_nonces(void) {
|
|||
|
||||
if (first_byte_num == 256) {
|
||||
if (hardnested_stage == CHECK_1ST_BYTES) {
|
||||
for (uint16_t i = 0; i < NUM_SUMS; i++) {
|
||||
for (uint8_t i = 0; i < NUM_SUMS; i++) {
|
||||
if (first_byte_Sum == sums[i]) {
|
||||
first_byte_Sum = i;
|
||||
break;
|
||||
|
@ -1471,7 +1477,7 @@ static int acquire_nonces(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_
|
|||
|
||||
if (first_byte_num == 256) {
|
||||
if (hardnested_stage == CHECK_1ST_BYTES) {
|
||||
for (uint16_t i = 0; i < NUM_SUMS; i++) {
|
||||
for (uint8_t i = 0; i < NUM_SUMS; i++) {
|
||||
if (first_byte_Sum == sums[i]) {
|
||||
first_byte_Sum = i;
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue