p4->even = 0; p4->odd = 0;\r
statelists[0].len = p3 - statelists[0].head.slhead;\r
statelists[1].len = p4 - statelists[1].head.slhead;\r
- statelists[0].tail.sltail=--p3;\r
- statelists[1].tail.sltail=--p4;\r
+ statelists[0].tail.sltail = --p3;\r
+ statelists[1].tail.sltail = --p4;\r
\r
// the statelists now contain possible keys. The key we are searching for must be in the\r
// intersection of both lists. Create the intersection:\r
free(statelists[1].head.slhead);\r
num_to_bytes(key64, 6, resultKey);\r
\r
- PrintAndLog("UID: %08x target block:%3u key type: %c -- Found key [%012"llx"]",\r
+ PrintAndLog("UID: %08x target block:%3u key type: %c -- Found key [%012" PRIx64 "]",\r
uid,\r
(uint16_t)resp.arg[2] & 0xff,\r
(resp.arg[2] >> 8) ? 'B' : 'A',\r
}\r
\r
int mfCheckKeys (uint8_t blockNo, uint8_t keyType, bool clear_trace, uint8_t keycnt, uint8_t * keyBlock, uint64_t * key){\r
- *key = 0;\r
- UsbCommand c = {CMD_MIFARE_CHKKEYS, { (blockNo | (keyType<<8)), clear_trace, keycnt}};\r
+#define STD_SEARCH 1\r
+#define EXT_SEARCH 2\r
+ *key = 0; \r
+ UsbCommand c = {CMD_MIFARE_CHKKEYS, { (blockNo | (keyType << 8)), ((EXT_SEARCH << 8) | clear_trace), keycnt}};\r
memcpy(c.d.asBytes, keyBlock, 6 * keycnt);\r
clearCommandBuffer();\r
SendCommand(&c);\r
return found;\r
}\r
\r
-\r
// EMULATOR\r
-\r
int mfEmlGetMem(uint8_t *data, int blockNum, int blocksCount) {\r
UsbCommand c = {CMD_MIFARE_EML_MEMGET, {blockNum, blocksCount, 0}};\r
clearCommandBuffer();\r
SendCommand(&c);\r
UsbCommand resp;\r
- if (!WaitForResponseTimeout(CMD_ACK,&resp,1500)) return 1;\r
+ if (!WaitForResponseTimeout(CMD_ACK, &resp, 1500)) return 1;\r
memcpy(data, resp.d.asBytes, blocksCount * 16);\r
return 0;\r
}\r
memset(buf, 0, sizeof(buf));\r
if (fgets(buf, sizeof(buf), f) == NULL) {\r
PrintAndLog("No trace file found or reading error.");\r
- fclose(f);\r
+ if (f) {\r
+ fclose(f);\r
+ f = NULL;\r
+ }\r
return 2;\r
}\r
\r
if (strlen(buf) < 32){\r
if (feof(f)) break;\r
PrintAndLog("File content error. Block data must include 32 HEX symbols");\r
- fclose(f);\r
+ if (f) {\r
+ fclose(f);\r
+ f = NULL;\r
+ }\r
return 2;\r
}\r
for (i = 0; i < 32; i += 2)\r
\r
blockNum++;\r
}\r
- fclose(f);\r
+ if (f) {\r
+ fclose(f);\r
+ f = NULL;\r
+ }\r
return 0;\r
}\r
\r
fprintf(f,"\n");\r
}\r
fflush(f);\r
- fclose(f);\r
+ if (f) {\r
+ fclose(f);\r
+ f = NULL;\r
+ }\r
return 0;\r
}\r
\r
lfsr_rollback_word(revstate, nr_enc, 1);\r
lfsr_rollback_word(revstate, cuid ^ nt, 0);\r
crypto1_get_lfsr(revstate, &key);\r
- PrintAndLog("Found Key: [%012"llx"]", key);\r
+ PrintAndLog("Found Key: [%012" PRIx64 "]", key);\r
\r
//if ( tryMfk64(cuid, nt, nr_enc, ar_enc, at_enc, &key) )\r
AddLogUint64(logHexFileName, "Found Key: ", key); \r