X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/9a9bcea82baed04c6986d02f671b836e2875dc79..13024283676d477113b2a9d5a5ccf71c50bc7bbe:/client/cmdhficlass.c?ds=sidebyside diff --git a/client/cmdhficlass.c b/client/cmdhficlass.c index e0d1d983..31f7ba97 100644 --- a/client/cmdhficlass.c +++ b/client/cmdhficlass.c @@ -29,6 +29,7 @@ #include "loclass/ikeys.h" #include "loclass/elite_crack.h" #include "loclass/fileutils.h" +#include "protocols.h" static int CmdHelp(const char *Cmd); @@ -75,10 +76,9 @@ int CmdHFiClassSim(const char *Cmd) uint8_t CSN[8] = {0, 0, 0, 0, 0, 0, 0, 0}; if (strlen(Cmd)<1) { - usage_hf_iclass_sim(); + return usage_hf_iclass_sim(); } - - simType = param_get8(Cmd, 0); + simType = param_get8ex(Cmd, 0, 0, 10); if(simType == 0) { @@ -322,7 +322,7 @@ int CmdHFiClassReader_Dump(const char *Cmd) PrintAndLog("Hash0, a.k.a diversified key, that is computed using Ksel and stored in the card (Block 3):"); printvar("Div key", div_key, 8); printvar("CC_NR:",CCNR,12); - doMAC(CCNR,12,div_key, MAC); + doMAC(CCNR,div_key, MAC); printvar("MAC", MAC, 4); uint8_t iclass_data[32000] = {0}; @@ -364,6 +364,8 @@ int CmdHFiClassReader_Dump(const char *Cmd) snprintf(filename, 100,"iclass_tagdump-%02x%02x%02x%02x%02x%02x%02x%02x", CSN[0],CSN[1],CSN[2],CSN[3], CSN[4],CSN[5],CSN[6],CSN[7]); + //Place the div_key in block 3 + memcpy(iclass_data+(3*8), div_key, 8); saveFile(filename,"bin",iclass_data, iclass_datalen ); } //Aaaand we're finished @@ -419,9 +421,12 @@ int CmdHFiClassELoad(const char *Cmd) fseek(f, 0, SEEK_SET); uint8_t *dump = malloc(fsize); + + size_t bytes_read = fread(dump, 1, fsize, f); fclose(f); + printIclassDumpInfo(dump); //Validate if (bytes_read < fsize) @@ -454,7 +459,7 @@ int usage_hf_iclass_decrypt() PrintAndLog("OBS! In order to use this function, the file 'iclass_decryptionkey.bin' must reside"); PrintAndLog("in the working directory. The file should be 16 bytes binary data"); PrintAndLog(""); - PrintAndLog("example: hf iclass decrypt tagdump_12312342343.bin"); + PrintAndLog("example: hf iclass decrypt f tagdump_12312342343.bin"); PrintAndLog(""); PrintAndLog("OBS! This is pretty stupid implementation, it tries to decrypt every block after block 6. "); PrintAndLog("Correct behaviour would be to decrypt only the application areas where the key is valid,"); @@ -602,7 +607,7 @@ int CmdHFiClass_iso14443A_write(const char *Cmd) diversifyKey(CSN,KEY, div_key); PrintAndLog("Div Key: %s",sprint_hex(div_key,8)); - doMAC(CCNR, 12,div_key, MAC); + doMAC(CCNR, div_key, MAC); UsbCommand c2 = {CMD_ICLASS_ISO14443A_WRITE, {readerType,blockNo}}; memcpy(c2.d.asBytes, bldata, 8);