X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/f38a152863a5eb289acb169c5a38b4b77e87956e..02306bac2dc44bd1de5422f9db127b231cde304f:/client/cmdhficlass.c?ds=sidebyside diff --git a/client/cmdhficlass.c b/client/cmdhficlass.c index e32664f5..7bbf26b2 100644 --- a/client/cmdhficlass.c +++ b/client/cmdhficlass.c @@ -55,7 +55,7 @@ int CmdHFiClassList(const char *Cmd) return 0; } - uint8_t got[1920]; + uint8_t got[TRACE_BUFFER_SIZE]; GetFromBigBuf(got,sizeof(got),0); WaitForResponse(CMD_ACK,NULL); @@ -77,7 +77,7 @@ int CmdHFiClassList(const char *Cmd) uint32_t EndOfTransmissionTimestamp = 0; - for( i=0; i < 1900;) + for( i=0; i < TRACE_BUFFER_SIZE;) { //First 32 bits contain // isResponse (1 bit) @@ -97,7 +97,7 @@ int CmdHFiClassList(const char *Cmd) first_timestamp = timestamp; } - // Break and stick with current result if buffer was not completely full + // Break and stick with current result idf buffer was not completely full if (frame[0] == 0x44 && frame[1] == 0x44 && frame[2] == 0x44 && frame[3] == 0x44) break; char line[1000] = ""; @@ -437,7 +437,7 @@ int CmdHFiClassReader_Replay(const char *Cmd) PrintAndLog("Usage: hf iclass replay "); PrintAndLog(" sample: hf iclass replay 00112233"); return 0; - } + } if (param_gethex(Cmd, 0, MAC, 8)) { PrintAndLog("MAC must include 8 HEX symbols"); @@ -477,11 +477,12 @@ int CmdHFiClassReader_Dump(const char *Cmd) return 0; } - if (param_gethex(Cmd, 0, KEY, 16)) { + if (param_gethex(Cmd, 0, KEY, 16)) + { PrintAndLog("KEY must include 16 HEX symbols"); return 1; } - + if (param_getchar(Cmd, 1) == 'e') { PrintAndLog("Elite switch on"); @@ -500,7 +501,9 @@ int CmdHFiClassReader_Dump(const char *Cmd) SendCommand(&c); UsbCommand resp; - + uint8_t key_sel[8] = {0x00}; + uint8_t key_sel_p[8] = {0x00}; + if (WaitForResponseTimeout(CMD_ACK,&resp,4500)) { uint8_t isOK = resp.arg[0] & 0xff; uint8_t * data = resp.d.asBytes; @@ -518,8 +521,7 @@ int CmdHFiClassReader_Dump(const char *Cmd) { if(elite) { - uint8_t key_sel[8] = {0}; - uint8_t key_sel_p[8] = { 0 }; + //Get the key index (hash1) uint8_t key_index[8] = {0}; @@ -593,7 +595,7 @@ int CmdHFiClass_iso14443A_write(const char *Cmd) if (blockNo>32) { PrintAndLog("Error: Maximum number of blocks is 32 for iClass 2K Cards!"); - return 1; + return 1; } if (param_gethex(Cmd, 2, bldata, 8)) { @@ -649,7 +651,10 @@ static command_t CommandTable[] = {"list", CmdHFiClassList, 0, "List iClass history"}, {"snoop", CmdHFiClassSnoop, 0, "Eavesdrop iClass communication"}, {"sim", CmdHFiClassSim, 0, "Simulate iClass tag"}, - {"reader", CmdHFiClassReader, 0, "Read an iClass tag"}, + {"reader",CmdHFiClassReader, 0, "Read an iClass tag"}, + {"replay",CmdHFiClassReader_Replay, 0, "Read an iClass tag via Reply Attack"}, + {"dump", CmdHFiClassReader_Dump, 0, "Authenticate and Dump iClass tag"}, + {"write", CmdHFiClass_iso14443A_write, 0, "Authenticate and Write iClass block"}, {"replay", CmdHFiClassReader_Replay, 0, "Read an iClass tag via Reply Attack"}, {"dump", CmdHFiClassReader_Dump, 0, "Authenticate and Dump iClass tag"}, {"write", CmdHFiClass_iso14443A_write, 0, "Authenticate and Write iClass block"},