numblks = data[8];
getMemConfig(data[13], data[12], &maxBlk, &app_areas, &kb);
// large memory - not able to dump pages currently
numblks = data[8];
getMemConfig(data[13], data[12], &maxBlk, &app_areas, &kb);
// large memory - not able to dump pages currently
// add diversified keys to dump
if (have_debit_key) memcpy(tag_data+(3*8),div_key,8);
if (have_credit_key) memcpy(tag_data+(4*8),c_div_key,8);
// add diversified keys to dump
if (have_debit_key) memcpy(tag_data+(3*8),div_key,8);
if (have_credit_key) memcpy(tag_data+(4*8),c_div_key,8);
- printf("CSN |00| %s |\n", sprint_hex(tag_data, 8));
- printf("CSN |00| %s |\n", sprint_hex(tag_data, 8));
- printIclassDumpContents(tag_data, 1, (gotBytes/8)-1, gotBytes-8);
+ printf("------+--+-------------------------+\n");
+ printf("CSN |00| %s|\n", sprint_hex(tag_data, 8));
+ //printIclassDumpContents(tag_data, 1, (gotBytes/8)-1, gotBytes-8);
+ printIclassDumpContents(tag_data, 1, (gotBytes/8), gotBytes);
if (filename[0] == 0){
snprintf(filename, FILE_PATH_SIZE,"iclass_tagdump-%02x%02x%02x%02x%02x%02x%02x%02x",
if (filename[0] == 0){
snprintf(filename, FILE_PATH_SIZE,"iclass_tagdump-%02x%02x%02x%02x%02x%02x%02x%02x",
}
void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t endblock, size_t filesize) {
}
void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t endblock, size_t filesize) {
- //PrintAndLog ("endblock: %d, filesize: %d, maxmemcount: %d, filemaxblock: %d", endblock,filesize, maxmemcount, filemaxblock);
- if (endblock > filemaxblock)
- endblock = filemaxblock;
+ // remember endblock needs to relate to zero-index arrays.
+ if (endblock > filemaxblock-1)
+ endblock = filemaxblock-1;
+
+ //PrintAndLog ("startblock: %d, endblock: %d, filesize: %d, maxmemcount: %d, filemaxblock: %d",startblock, endblock,filesize, maxmemcount, filemaxblock);
- printf("Block |%02X| ",i);
- memcpy(blockdata, iclass_dump + (i * 8), 8);
- for (j = 0;j < 8;j++)
- printf("%02X ", blockdata[j]);
- printf("|\n");
+ uint8_t *blk = iclass_dump + (i * 8);
+ printf("Block |%02X| %s|\n", i, sprint_hex(blk, 8) );
- printf("CSN [00] | %s |\n", sprint_hex(csn, 8) );
- printIclassDumpContents(dump,startblock,endblock,bytes_read);
+ printf("------+--+-------------------------+\n");
+ printf("CSN |00| %s|\n", sprint_hex(csn, 8) );
+ printIclassDumpContents(dump, startblock, endblock, bytes_read);
- printf("Old Div Key : %s\n",sprint_hex(old_div_key,8));
- printf("New Div Key : %s\n",sprint_hex(new_div_key,8));
- printf("Xor Div Key : %s\n",sprint_hex(xor_div_key,8));
+ printf("Old div key : %s\n",sprint_hex(old_div_key,8));
+ printf("New div key : %s\n",sprint_hex(new_div_key,8));
+ printf("Xor div key : %s\n",sprint_hex(xor_div_key,8));
PrintAndLog(" std key to e key read csn: hf iclass calcnewkey o 1122334455667788 n 2233445566778899 e");
PrintAndLog(" std to std read csn : hf iclass calcnewkey o 1122334455667788 n 2233445566778899");
PrintAndLog("NOTE: * = required\n");
PrintAndLog(" std key to e key read csn: hf iclass calcnewkey o 1122334455667788 n 2233445566778899 e");
PrintAndLog(" std to std read csn : hf iclass calcnewkey o 1122334455667788 n 2233445566778899");
PrintAndLog("NOTE: * = required\n");
PrintAndLog("%u: %s", i, sprint_hex(iClass_Key_Table[i],8));
PrintAndLog("%u: %s", i, sprint_hex(iClass_Key_Table[i],8));
- {"help", CmdHelp, 1, "This help"},
+ {"help", CmdHelp, 1, "This help"},
{"calcnewkey", CmdHFiClassCalcNewKey, 1, "[options..] Calc Diversified keys (blocks 3 & 4) to write new keys"},
{"clone", CmdHFiClassCloneTag, 0, "[options..] Authenticate and Clone from iClass bin file"},
{"decrypt", CmdHFiClassDecrypt, 1, "[f <fname>] Decrypt tagdump" },
{"calcnewkey", CmdHFiClassCalcNewKey, 1, "[options..] Calc Diversified keys (blocks 3 & 4) to write new keys"},
{"clone", CmdHFiClassCloneTag, 0, "[options..] Authenticate and Clone from iClass bin file"},
{"decrypt", CmdHFiClassDecrypt, 1, "[f <fname>] Decrypt tagdump" },
{"loclass", CmdHFiClass_loclass, 1, "[options..] Use loclass to perform bruteforce of reader attack dump"},
{"managekeys", CmdHFiClassManageKeys, 1, "[options..] Manage the keys to use with iClass"},
{"readblk", CmdHFiClass_ReadBlock, 0, "[options..] Authenticate and Read iClass block"},
{"loclass", CmdHFiClass_loclass, 1, "[options..] Use loclass to perform bruteforce of reader attack dump"},
{"managekeys", CmdHFiClassManageKeys, 1, "[options..] Manage the keys to use with iClass"},
{"readblk", CmdHFiClass_ReadBlock, 0, "[options..] Authenticate and Read iClass block"},
- {"reader",CmdHFiClassReader, 0, "Read an iClass tag"},
+ {"reader", CmdHFiClassReader, 0, "Read an iClass tag"},
{"readtagfile", CmdHFiClassReadTagFile, 1, "[options..] Display Content from tagfile"},
{"replay", CmdHFiClassReader_Replay, 0, "<mac> Read an iClass tag via Reply Attack"},
{"sim", CmdHFiClassSim, 0, "[options..] Simulate iClass tag"},
{"readtagfile", CmdHFiClassReadTagFile, 1, "[options..] Display Content from tagfile"},
{"replay", CmdHFiClassReader_Replay, 0, "<mac> Read an iClass tag via Reply Attack"},
{"sim", CmdHFiClassSim, 0, "[options..] Simulate iClass tag"},