X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/f07e76c687291ad31eff9e76b2ebb72a326d01c1..c92cf814955a829c7cfe0e6a3b7eacf943f348ed:/client/cmdhf.c diff --git a/client/cmdhf.c b/client/cmdhf.c index 6cd65fd6..2df3477f 100644 --- a/client/cmdhf.c +++ b/client/cmdhf.c @@ -36,6 +36,8 @@ int CmdHFTune(const char *Cmd) return 0; } +//TODO: +//void annotateIso15693(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize){} void annotateIso14443a(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize) { @@ -87,32 +89,44 @@ void annotateIso14443a(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize) case MIFARE_MAGICWIPEC: snprintf(exp,size,"MAGIC WIPEC"); break; case MIFARE_ULC_AUTH_1 : snprintf(exp,size,"AUTH "); break; case MIFARE_ULC_AUTH_2 : snprintf(exp,size,"AUTH_ANSW"); break; - case MIFARE_ULEV1_AUTH : snprintf(exp,size,"PWD-AUTH"); break; + case MIFARE_ULEV1_AUTH : + if ( cmdsize == 7 ) + snprintf(exp,size,"PWD-AUTH KEY: 0x%02x%02x%02x%02x", cmd[1], cmd[2], cmd[3], cmd[4] ); + else + snprintf(exp,size,"PWD-AUTH"); + break; case MIFARE_ULEV1_FASTREAD : { - if ( cmd[2] < 0x21) + if ( cmdsize >=3 && cmd[2] <= 0xE6) snprintf(exp,size,"READ RANGE (%d-%d)",cmd[1],cmd[2]); + else + snprintf(exp,size,"?"); break; } - case MIFARE_ULEV1_WRITE : { + case MIFARE_ULC_WRITE : { if ( cmd[1] < 0x21 ) snprintf(exp,size,"WRITEBLOCK(%d)",cmd[1]); + else + snprintf(exp,size,"?"); break; } case MIFARE_ULEV1_READ_CNT :{ if ( cmd[1] < 5 ) snprintf(exp,size,"READ CNT(%d)",cmd[1]); + else + snprintf(exp,size,"?"); break; } case MIFARE_ULEV1_INCR_CNT : { if ( cmd[1] < 5 ) - snprintf(exp,size,"INC(%d)",cmd[1]); + snprintf(exp,size,"INCR(%d)",cmd[1]); + else + snprintf(exp,size,"?"); break; } case MIFARE_ULEV1_READSIG : snprintf(exp,size,"READ_SIG"); break; case MIFARE_ULEV1_CHECKTEAR : snprintf(exp,size,"CHK_TEARING(%d)",cmd[1]); break; case MIFARE_ULEV1_VCSL : snprintf(exp,size,"VCSL"); break; - default: snprintf(exp,size,"?"); break; } return; @@ -274,9 +288,8 @@ uint8_t iso14443B_CRC_check(bool isResponse, uint8_t* data, uint8_t len) ComputeCrc14443(CRC_14443_B, data, len-2, &b1, &b2); if(b1 != data[len-2] || b2 != data[len-1]) { return 0; - } else { - return 1; } + return 1; } /** @@ -651,6 +664,21 @@ int CmdHFList(const char *Cmd) return 0; } +int CmdHFSearch(const char *Cmd){ + int ans = 0; + ans = CmdHF14AReader(Cmd); + if (ans > 0) return ans; + + ans = CmdHF15Reader(Cmd); + //if (ans > 0) return ans; + + ans = CmdHF14BRead(Cmd); + //if (ans > 0) return ans; + + ans = CmdHFiClassReader(Cmd); + //if (ans > 0) return ans; + return 0; +} static command_t CommandTable[] = { @@ -667,6 +695,7 @@ static command_t CommandTable[] = {"topaz", CmdHFTopaz, 1, "{ TOPAZ (NFC Type 1) RFIDs... }"}, {"tune", CmdHFTune, 0, "Continuously measure HF antenna tuning"}, {"list", CmdHFList, 1, "List protocol data in trace buffer"}, + {"search", CmdHFSearch, 1, "Search for known HF tags"}, {NULL, NULL, 0, NULL} };