iclass refactor/cleanup

This commit is contained in:
marshmellow42 2015-07-21 14:26:46 -04:00
commit 4d68ec02b2
3 changed files with 319 additions and 465 deletions

View file

@ -1918,7 +1918,6 @@ void iClass_Authentication(uint8_t *MAC) {
bool isOK;
isOK = sendCmdGetResponseWithRetries(check, sizeof(check),resp, 4, 5);
cmd_send(CMD_ACK,isOK,0,0,0,0);
//Dbprintf("isOK %d, Tag response : %02x%02x%02x%02x",isOK,resp[0],resp[1],resp[2],resp[3]);
}
bool iClass_ReadBlock(uint8_t blockNo, uint8_t keyType, uint8_t *readdata) {
uint8_t readcmd[] = {keyType, blockNo}; //0x88, 0x00
@ -1936,7 +1935,6 @@ void iClass_ReadBlk(uint8_t blockno, uint8_t keyType) {
uint8_t readblockdata[8];
bool isOK = false;
isOK = iClass_ReadBlock(blockno, keyType, readblockdata);
//Dbprintf("read block [%02x] [%02x%02x%02x%02x%02x%02x%02x%02x]",blockNo,readblockdata[0],readblockdata[1],readblockdata[2],readblockdata[3],readblockdata[4],readblockdata[5],readblockdata[6],readblockdata[7]);
cmd_send(CMD_ACK,isOK,0,0,readblockdata,8);
}
@ -1964,11 +1962,6 @@ void iClass_Dump(uint8_t blockno, uint8_t numblks, uint8_t keyType) {
}
}
memcpy(dataout+(blkCnt*8),readblockdata,8);
/*Dbprintf("| %02x | %02x%02x%02x%02x%02x%02x%02x%02x |",
blockno+blkCnt, readblockdata[0], readblockdata[1], readblockdata[2],
readblockdata[3], readblockdata[4], readblockdata[5],
readblockdata[6], readblockdata[7]);
*/
}
//return pointer to dump memory in arg3
cmd_send(CMD_ACK,isOK,blkCnt,BigBuf_max_traceLen(),0,0);
@ -1985,7 +1978,6 @@ bool iClass_WriteBlock_ext(uint8_t blockNo, uint8_t keyType, uint8_t *data) {
uint8_t resp[10];
bool isOK;
isOK = sendCmdGetResponseWithRetries(write,sizeof(write),resp,sizeof(resp),5);
//Dbprintf("reply [%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x]",resp[0],resp[1],resp[2],resp[3],resp[4],resp[5],resp[6],resp[7],resp[8],resp[9]);
if (isOK) {
isOK = iClass_ReadBlock(blockNo, keyType, readblockdata);
//try again
@ -1993,7 +1985,6 @@ bool iClass_WriteBlock_ext(uint8_t blockNo, uint8_t keyType, uint8_t *data) {
isOK = iClass_ReadBlock(blockNo, keyType, readblockdata);
}
if (isOK) {
//Dbprintf("read block [%02x] [%02x%02x%02x%02x%02x%02x%02x%02x]",blockNo,readblockdata[0],readblockdata[1],readblockdata[2],readblockdata[3],readblockdata[4],readblockdata[5],readblockdata[6],readblockdata[7]);
if (memcmp(write+2,readblockdata,sizeof(readblockdata)) != 0){
isOK=false;
}

File diff suppressed because it is too large Load diff

View file

@ -14,17 +14,26 @@
int CmdHFiClass(const char *Cmd);
int CmdHFiClassSnoop(const char *Cmd);
int CmdHFiClassSim(const char *Cmd);
int CmdHFiClassCalcNewKey(const char *Cmd);
int CmdHFiClassCloneTag(const char *Cmd);
int CmdHFiClassDecrypt(const char *Cmd);
int CmdHFiClassEncryptBlk(const char *Cmd);
int CmdHFiClassELoad(const char *Cmd);
int CmdHFiClassList(const char *Cmd);
int HFiClassReader(const char *Cmd, bool loop, bool verbose);
int CmdHFiClassReader(const char *Cmd);
int CmdHFiClassReader_Dump(const char *Cmd);
int CmdHFiClassReader_Replay(const char *Cmd);
int CmdHFiClassReadKeyFile(const char *filename);
int CmdHFiClassWriteKeyFile(const char *Cmd);
int CmdHFiClassReadTagFile(const char *Cmd);
int CmdHFiClass_ReadBlock(const char *Cmd);
int CmdHFiClass_WriteBlock(const char *Cmd);
int CmdHFiClassCalcEKey(const char *Cmd);
int CmdHFiClass_TestMac(const char *Cmd);
int CmdHFiClassManageKeys(const char *Cmd);
int CmdHFiClass_loclass(const char *Cmd);
int CmdHFiClassSnoop(const char *Cmd);
int CmdHFiClassSim(const char *Cmd);
int CmdHFiClassWriteKeyFile(const char *Cmd);
int CmdHFiClass_WriteBlock(const char *Cmd);
void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t endblock, size_t filesize);
void HFiClassCalcDivKey(uint8_t *CSN, uint8_t *KEY, uint8_t *div_key, bool elite);
#endif