]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdhfmfhard.c
FIX: @marshmellow42 's ST detection fix.
[proxmark3-svn] / client / cmdhfmfhard.c
index f9c1415c63937f7b28ca290b316ce7f60c001826..2e5046754e6cda8097ce2a96936a6191408ae0f9 100644 (file)
@@ -723,8 +723,8 @@ static void simulate_acquire_nonces()
        cuid = (rand() & 0xff) << 24 | (rand() & 0xff) << 16 | (rand() & 0xff) << 8 | (rand() & 0xff);
        known_target_key = ((uint64_t)rand() & 0xfff) << 36 | ((uint64_t)rand() & 0xfff) << 24 | ((uint64_t)rand() & 0xfff) << 12 | ((uint64_t)rand() & 0xfff);
        
-       printf("Simulating nonce acquisition for target key %012"llx", cuid %08x ...\n", known_target_key, cuid);
-       fprintf(fstats, "%012"llx";%08x;", known_target_key, cuid);
+       printf("Simulating nonce acquisition for target key %012" PRIx64 ", cuid %08x ...\n", known_target_key, cuid);
+       fprintf(fstats, "%012" PRIx64 ";%08x;", known_target_key, cuid);
        
        do {
                uint32_t nt_enc = 0;
@@ -803,7 +803,7 @@ static int acquire_nonces(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_
                while(!WaitForResponseTimeout(CMD_ACK, &resp, 2000)) {
                        timeout++;
                        printf(".");
-                       if (timeout > 7) {
+                       if (timeout > 3) {
                                PrintAndLog("\nNo response from Proxmark. Aborting...");
                                if (fnonces) fclose(fnonces);
                                return 1;
@@ -1247,7 +1247,7 @@ static bool TestIfKeyExists(uint64_t key)
 
        uint32_t state_odd = pcs->odd & 0x00ffffff;
        uint32_t state_even = pcs->even & 0x00ffffff;
-       //printf("Tests: searching for key %llx after first byte 0x%02x (state_odd = 0x%06x, state_even = 0x%06x) ...\n", key, best_first_bytes[0], state_odd, state_even);
+       //printf("Tests: searching for key %" PRIx64 " after first byte 0x%02x (state_odd = 0x%06x, state_even = 0x%06x) ...\n", key, best_first_bytes[0], state_odd, state_even);
        printf("Validating key search space\n");
        uint64_t count = 0;
        for (statelist_t *p = candidates; p != NULL; p = p->next) {
@@ -1271,7 +1271,7 @@ static bool TestIfKeyExists(uint64_t key)
                count += (p_odd - p->states[ODD_STATE]) * (p_even - p->states[EVEN_STATE]);
                if (found_odd && found_even) {
                        if (known_target_key != -1) {
-                               PrintAndLog("Key Found after testing %llu (2^%1.1f) out of %lld (2^%1.1f) keys.", 
+                               PrintAndLog("Key Found after testing %" PRIu64 " (2^%1.1f) out of %lld (2^%1.1f) keys.", 
                                        count,
                                        log(count)/log(2), 
                                        maximum_states,
@@ -1788,6 +1788,10 @@ int mfnestedhard(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBloc
                } else { // acquire nonces.
                        uint16_t is_OK = acquire_nonces(blockNo, keyType, key, trgBlockNo, trgKeyType, nonce_file_write, slow);
                        if (is_OK != 0) {
+                               free_nonces_memory();
+                               //free_statelist_cache();
+                               free_candidates_memory(candidates);
+                               candidates = NULL;
                                return is_OK;
                        }
                }
Impressum, Datenschutz