]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/nonce2key/nonce2key.c
Potential fix for 0-length usb packets seen on OSX
[proxmark3-svn] / client / nonce2key / nonce2key.c
index 47206380ae2bbf1cb07bd16c51bc5d95fda6623e..70d874fe88600c2a8a60014306e480b3f04a42a2 100644 (file)
@@ -38,7 +38,7 @@ int nonce2key(uint32_t uid, uint32_t nt, uint32_t nr, uint64_t par_info, uint64_
   static int64_t *last_keylist;
   rr = 0;
   
   static int64_t *last_keylist;
   rr = 0;
   
-  if (last_uid != uid)
+  if (last_uid != uid && last_keylist != NULL)
   {
        free(last_keylist);
        last_keylist = NULL;
   {
        free(last_keylist);
        last_keylist = NULL;
@@ -48,7 +48,7 @@ int nonce2key(uint32_t uid, uint32_t nt, uint32_t nr, uint64_t par_info, uint64_
   // Reset the last three significant bits of the reader nonce
   nr &= 0xffffff1f;
   
   // Reset the last three significant bits of the reader nonce
   nr &= 0xffffff1f;
   
-  PrintAndLog("\nuid(%08x) nt(%08x) par(%016"llx") ks(%016"llx")\n\n",uid,nt,par_info,ks_info);
+  PrintAndLog("\nuid(%08x) nt(%08x) par(%016"llx") ks(%016"llx") nr(%08"llx")\n\n",uid,nt,par_info,ks_info,nr);
 
   for (pos=0; pos<8; pos++)
   {
 
   for (pos=0; pos<8; pos++)
   {
@@ -105,7 +105,7 @@ int nonce2key(uint32_t uid, uint32_t nt, uint32_t nr, uint64_t par_info, uint64_
                        p2 = state_s;
                        while ( *p1 != -1 && *p2 != -1 ) {
                                if (compar_state(p1, p2) == 0) {
                        p2 = state_s;
                        while ( *p1 != -1 && *p2 != -1 ) {
                                if (compar_state(p1, p2) == 0) {
-                                       printf("p1:%ld p2:%ld p3:%ld key:%012"llx"\n",p1-last_keylist, p2-state_s, p3-last_keylist,*p1);
+                                       printf("p1:%"llx" p2:%"llx" p3:%"llx" key:%012"llx"\n",(uint64_t)(p1-last_keylist),(uint64_t)(p2-state_s),(uint64_t)(p3-last_keylist),*p1);
                                        *p3++ = *p1++;
                                        p2++;
                                }
                                        *p3++ = *p1++;
                                        p2++;
                                }
@@ -125,7 +125,7 @@ int nonce2key(uint32_t uid, uint32_t nt, uint32_t nr, uint64_t par_info, uint64_
        }
        
        printf("key_count:%d\n", key_count);
        }
        
        printf("key_count:%d\n", key_count);
-       
+
        // The list may still contain several key candidates. Test each of them with mfCheckKeys
        for (i = 0; i < key_count; i++) {
                uint8_t keyBlock[6];
        // The list may still contain several key candidates. Test each of them with mfCheckKeys
        for (i = 0; i < key_count; i++) {
                uint8_t keyBlock[6];
@@ -133,7 +133,7 @@ int nonce2key(uint32_t uid, uint32_t nt, uint32_t nr, uint64_t par_info, uint64_
                key64 = *(last_keylist + i);
                num_to_bytes(key64, 6, keyBlock);
                key64 = 0;
                key64 = *(last_keylist + i);
                num_to_bytes(key64, 6, keyBlock);
                key64 = 0;
-               if (!mfCheckKeys(0, 0, 1, keyBlock, &key64)) {
+               if (!mfCheckKeys(0, 0, false, 1, keyBlock, &key64)) {
                        *key = key64;
                        free(last_keylist);
                        last_keylist = NULL;
                        *key = key64;
                        free(last_keylist);
                        last_keylist = NULL;
Impressum, Datenschutz