keyBlock = calloc(stKeyBlock, 6);\r
if (keyBlock == NULL) return 1;\r
\r
- num_to_bytes(0xffffffffffff, 6, (uint8_t*)(keyBlock + 0 * 6)); // Default key (first key used by program if no user defined key)\r
- num_to_bytes(0x000000000000, 6, (uint8_t*)(keyBlock + 1 * 6)); // Blank key\r
- num_to_bytes(0xa0a1a2a3a4a5, 6, (uint8_t*)(keyBlock + 2 * 6)); // NFCForum MAD key\r
- num_to_bytes(0xb0b1b2b3b4b5, 6, (uint8_t*)(keyBlock + 3 * 6));\r
- num_to_bytes(0xaabbccddeeff, 6, (uint8_t*)(keyBlock + 4 * 6));\r
- num_to_bytes(0x4d3a99c351dd, 6, (uint8_t*)(keyBlock + 5 * 6));\r
- num_to_bytes(0x1a982c7e459a, 6, (uint8_t*)(keyBlock + 6 * 6));\r
- num_to_bytes(0xd3f7d3f7d3f7, 6, (uint8_t*)(keyBlock + 7 * 6));\r
- num_to_bytes(0x714c5c886e97, 6, (uint8_t*)(keyBlock + 8 * 6));\r
- num_to_bytes(0x587ee5f9350f, 6, (uint8_t*)(keyBlock + 9 * 6));\r
- num_to_bytes(0xa0478cc39091, 6, (uint8_t*)(keyBlock + 10 * 6));\r
- num_to_bytes(0x533cb6c723f6, 6, (uint8_t*)(keyBlock + 11 * 6));\r
- num_to_bytes(0x8fd0a4f256e9, 6, (uint8_t*)(keyBlock + 12 * 6));\r
+ uint64_t defaultKeys[] =\r
+ {\r
+ 0xffffffffffff, // Default key (first key used by program if no user defined key)\r
+ 0x000000000000, // Blank key\r
+ 0xa0a1a2a3a4a5, // NFCForum MAD key\r
+ 0xb0b1b2b3b4b5,\r
+ 0xaabbccddeeff,\r
+ 0x4d3a99c351dd,\r
+ 0x1a982c7e459a,\r
+ 0xd3f7d3f7d3f7,\r
+ 0x714c5c886e97,\r
+ 0x587ee5f9350f,\r
+ 0xa0478cc39091,\r
+ 0x533cb6c723f6,\r
+ 0x8fd0a4f256e9\r
+ };\r
+ int defaultKeysSize = (sizeof(defaultKeys) / 7) - 1;\r
+\r
+ for (int defaultKeyCounter = 0; defaultKeyCounter < defaultKeysSize; defaultKeyCounter++)\r
+ {\r
+ num_to_bytes(defaultKeys[defaultKeyCounter], 6, (uint8_t*)(keyBlock + defaultKeyCounter * 6));\r
+ }\r
\r
if (strlen(Cmd)<3) {\r
PrintAndLog("Usage: hf mf chk <block number>/<*card memory> <key type (A/B/?)> [t] [<key (12 hex symbols)>] [<dic (*.dic)>]");\r
}\r
\r
if ( (f = fopen( filename , "r")) ) {\r
- while( !feof(f) ){\r
- memset(buf, 0, sizeof(buf));\r
- if (fgets(buf, sizeof(buf), f) == NULL) {\r
- PrintAndLog("File reading error.");\r
- return 2;\r
- }\r
- \r
+ while( fgets(buf, sizeof(buf), f) ){\r
if (strlen(buf) < 12 || buf[11] == '\n')\r
continue;\r
\r
num_to_bytes(strtoll(buf, NULL, 16), 6, keyBlock + 6*keycnt);\r
PrintAndLog("chk custom key[%d] %012"llx, keycnt, bytes_to_num(keyBlock + 6*keycnt, 6));\r
keycnt++;\r
+ memset(buf, 0, sizeof(buf));\r
}\r
} else {\r
PrintAndLog("File: %s: not found or locked.", filename);\r
\r
if (keycnt == 0) {\r
PrintAndLog("No key specified,try default keys");\r
- for (;keycnt <=12; keycnt++)\r
+ for (;keycnt < defaultKeysSize; keycnt++)\r
PrintAndLog("chk default key[%d] %02x%02x%02x%02x%02x%02x", keycnt,\r
(keyBlock + 6*keycnt)[0],(keyBlock + 6*keycnt)[1], (keyBlock + 6*keycnt)[2],\r
(keyBlock + 6*keycnt)[3], (keyBlock + 6*keycnt)[4], (keyBlock + 6*keycnt)[5], 6);\r