mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-14 10:37:23 -07:00
fix wrong string formatters
This commit is contained in:
parent
b0dd246d94
commit
53c64858ef
1 changed files with 29 additions and 12 deletions
|
@ -91,7 +91,7 @@ static uint8_t valid_nonce(uint32_t Nt, uint32_t ks1, uint8_t nt_par_enc) {
|
|||
(oddparity8((Nt >> 8) & 0xFF) == (((nt_par_enc >> 1) & 1) ^ BIT(ks1, 0)));
|
||||
}
|
||||
|
||||
static bool search_match(NtData *pND, NtData *pND0, uint64_t key) {
|
||||
static bool search_match(const NtData *pND, const NtData *pND0, uint64_t key) {
|
||||
bool ret = 0;
|
||||
struct Crypto1State *s;
|
||||
s = crypto1_create(0);
|
||||
|
@ -170,9 +170,11 @@ static void *generate_and_intersect_keys(void *threadarg) {
|
|||
fprintf(stderr, "\nMalloc error in generate_and_intersect_keys!\n");
|
||||
pthread_exit(NULL);
|
||||
}
|
||||
|
||||
if (revstate_start == NULL) {
|
||||
revstate_start = revstate;
|
||||
}
|
||||
|
||||
uint32_t keyCount0 = 0;
|
||||
while ((revstate->odd != 0x0) || (revstate->even != 0x0)) {
|
||||
lfsr_rollback_word(revstate, nt_probe, 0);
|
||||
|
@ -185,7 +187,7 @@ static void *generate_and_intersect_keys(void *threadarg) {
|
|||
(*data->keyCount[nonce_index])++;
|
||||
pthread_mutex_unlock(data->keyCount_mutex[nonce_index]);
|
||||
if (*data->keyCount[nonce_index] == KEY_SPACE_SIZE_STEP2) {
|
||||
fprintf(stderr, "No space left on result_keys[%d], abort!\n", nonce_index);
|
||||
fprintf(stderr, "No space left on result_keys[%u], abort!\n", nonce_index);
|
||||
i = endPos;
|
||||
break;
|
||||
}
|
||||
|
@ -193,12 +195,12 @@ static void *generate_and_intersect_keys(void *threadarg) {
|
|||
}
|
||||
revstate++;
|
||||
}
|
||||
|
||||
free(revstate_start);
|
||||
revstate_start = NULL;
|
||||
|
||||
pthread_mutex_lock(data->keyCount_mutex[0]);
|
||||
(*data->keyCount[0]) += keyCount0;
|
||||
keyCount0 = 0;
|
||||
pthread_mutex_unlock(data->keyCount_mutex[0]);
|
||||
}
|
||||
|
||||
|
@ -236,8 +238,10 @@ static uint64_t **unpredictable_nested(NtpKs1List *pNKL, uint32_t keyCounts[]) {
|
|||
for (int i = 0; i < NUM_THREADS; i++) {
|
||||
if (thread_status[i]) activeThreads++;
|
||||
}
|
||||
|
||||
// Spawn new threads if there are available slots
|
||||
for (uint32_t t = 0; activeThreads < NUM_THREADS && startPos < pNKL->NtDataList[0].sizeNK && t < NUM_THREADS; t++) {
|
||||
|
||||
if (!thread_status[t]) {
|
||||
uint32_t endPos = startPos + chunk_size;
|
||||
if (endPos > pNKL->NtDataList[0].sizeNK) {
|
||||
|
@ -249,6 +253,7 @@ static uint64_t **unpredictable_nested(NtpKs1List *pNKL, uint32_t keyCounts[]) {
|
|||
thread_data[t].endPos = endPos;
|
||||
thread_data[t].thread_id = t;
|
||||
thread_data[t].num_nonces = pNKL->nr_nonces;
|
||||
|
||||
for (uint32_t i = 0; i < MAX_NR_NONCES; i++) {
|
||||
thread_data[t].result_keys[i] = result_keys[i];
|
||||
thread_data[t].keyCount[i] = &keyCounts[i];
|
||||
|
@ -273,9 +278,9 @@ static uint64_t **unpredictable_nested(NtpKs1List *pNKL, uint32_t keyCounts[]) {
|
|||
|
||||
pthread_mutex_unlock(&status_mutex);
|
||||
printf("\33[2K\rProgress: %02.1f%%", (double)(startPos + 1) * 100 / pNKL->NtDataList[0].sizeNK);
|
||||
printf(" keys[%d]:%9i", 0, keyCounts[0]);
|
||||
printf(" keys[%d]:%9u", 0, keyCounts[0]);
|
||||
for (uint32_t nonce_index = 1; nonce_index < pNKL->nr_nonces; nonce_index++) {
|
||||
printf(" keys[%d]:%5i", nonce_index, keyCounts[nonce_index]);
|
||||
printf(" keys[%u]:%5u", nonce_index, keyCounts[nonce_index]);
|
||||
}
|
||||
fflush(stdout);
|
||||
}
|
||||
|
@ -287,6 +292,7 @@ static uint64_t **unpredictable_nested(NtpKs1List *pNKL, uint32_t keyCounts[]) {
|
|||
for (int i = 0; i < NUM_THREADS; i++) {
|
||||
if (thread_status[i]) activeThreads++;
|
||||
}
|
||||
|
||||
while (activeThreads) {
|
||||
pthread_cond_wait(&status_cond, &status_mutex);
|
||||
activeThreads = 0;
|
||||
|
@ -317,10 +323,10 @@ static void analyze_keys(uint64_t **keys, uint32_t keyCounts[MAX_NR_NONCES], uin
|
|||
printf("Analyzing keys...\n");
|
||||
for (uint32_t i = 0; i < nr_nonces; i++) {
|
||||
if (i == 0) {
|
||||
printf("nT(%i): %i key candidates\n", i, keyCounts[i]);
|
||||
printf("nT(%u): %u key candidates\n", i, keyCounts[i]);
|
||||
continue;
|
||||
} else {
|
||||
printf("nT(%i): %i key candidates matching nT(0)\n", i, keyCounts[i]);
|
||||
printf("nT(%u): %u key candidates matching nT(0)\n", i, keyCounts[i]);
|
||||
}
|
||||
for (uint32_t j = 0; j < keyCounts[i]; j++) {
|
||||
uint64_t key = keys[i][j];
|
||||
|
@ -343,12 +349,15 @@ static void analyze_keys(uint64_t **keys, uint32_t keyCounts[MAX_NR_NONCES], uin
|
|||
}
|
||||
|
||||
for (uint32_t i = 0; i < combined_length; i++) {
|
||||
|
||||
if (combined_counts[i] > 1) {
|
||||
printf("Key %012" PRIx64 " found in %d arrays: 0", combined_keys[i], combined_counts[i] + 1);
|
||||
|
||||
for (uint32_t ii = 1; ii < nr_nonces; ii++) {
|
||||
for (uint32_t j = 0; j < keyCounts[ii]; j++) {
|
||||
|
||||
if (combined_keys[i] == keys[ii][j]) {
|
||||
printf(", %2i", ii);
|
||||
printf(", %2u", ii);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -417,10 +426,18 @@ int main(int argc, char *const argv[]) {
|
|||
}
|
||||
nttest = prng_successor(nttest, 1);
|
||||
}
|
||||
printf("uid=%08x nt_enc=%08x nt_par_err=%i%i%i%i nt_par_enc=%i%i%i%i %i/%i: %d\n", authuid, nt_enc,
|
||||
nt_par_err_arr[0], nt_par_err_arr[1], nt_par_err_arr[2], nt_par_err_arr[3],
|
||||
(nt_par_enc >> 3) & 1, (nt_par_enc >> 2) & 1, (nt_par_enc >> 1) & 1, nt_par_enc & 1,
|
||||
NKL.nr_nonces + 1, (argc - 1) / 3, j);
|
||||
printf("uid=%08x nt_enc=%08x nt_par_err=%i%i%i%i nt_par_enc=%i%i%i%i %u/%i: %u\n"
|
||||
, authuid
|
||||
, nt_enc
|
||||
, nt_par_err_arr[0], nt_par_err_arr[1], nt_par_err_arr[2], nt_par_err_arr[3]
|
||||
, (nt_par_enc >> 3) & 1
|
||||
, (nt_par_enc >> 2) & 1
|
||||
, (nt_par_enc >> 1) & 1
|
||||
, nt_par_enc & 1
|
||||
, NKL.nr_nonces + 1
|
||||
, (argc - 1) / 3
|
||||
, j
|
||||
);
|
||||
|
||||
pNtData->authuid = authuid;
|
||||
pNtData->sizeNK = j;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue