X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/8e21541e77dd0909a99a1ed1106a6df87d34a247..8aee1b84182e0e6590d4d689271bde0f1c158689:/client/cmdhf.c?ds=sidebyside diff --git a/client/cmdhf.c b/client/cmdhf.c index ee0b4fd8..dcfb1bdd 100644 --- a/client/cmdhf.c +++ b/client/cmdhf.c @@ -8,11 +8,16 @@ // High frequency commands //----------------------------------------------------------------------------- +#include #include #include #include "proxmark3.h" -#include "graph.h" +#include "util.h" +#include "data.h" #include "ui.h" +#include "iso14443crc.h" +#include "parity.h" +#include "cmdmain.h" #include "cmdparser.h" #include "cmdhf.h" #include "cmdhf14a.h" @@ -477,14 +482,8 @@ uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, ui for (int j = 0; j < data_len && j/16 < 16; j++) { - int oddparity = 0x01; - int k; - - for (k=0 ; k<8 ; k++) { - oddparity ^= (((frame[j] & 0xFF) >> k) & 0x01); - } uint8_t parityBits = parityBytes[j>>3]; - if (protocol != ISO_14443B && (isResponse || protocol == ISO_14443A) && (oddparity != ((parityBits >> (7-(j&0x0007))) & 0x01))) { + if (protocol != ISO_14443B && (isResponse || protocol == ISO_14443A) && (oddparity8(frame[j]) != ((parityBits >> (7-(j&0x0007))) & 0x01))) { snprintf(line[j/16]+(( j % 16) * 4),110, "%02x! ", frame[j]); } else { snprintf(line[j/16]+(( j % 16) * 4), 110, " %02x ", frame[j]); @@ -669,14 +668,14 @@ int CmdHFSearch(const char *Cmd){ PrintAndLog("\nValid ISO14443A Tag Found - Quiting Search\n"); return ans; } - ans = HF14BInfo(false); + ans = HFiClassReader("", false, false); if (ans) { - PrintAndLog("\nValid ISO14443B Tag Found - Quiting Search\n"); + PrintAndLog("\nValid iClass Tag (or PicoPass Tag) Found - Quiting Search\n"); return ans; } - ans = HFiClassReader("", false, false); + ans = HF14BInfo(false); if (ans) { - PrintAndLog("\nValid iClass Tag (or PicoPass Tag) Found - Quiting Search\n"); + PrintAndLog("\nValid ISO14443B Tag Found - Quiting Search\n"); return ans; } ans = HF15Reader("", false); @@ -688,9 +687,16 @@ int CmdHFSearch(const char *Cmd){ return 0; } +int CmdHFSnoop(const char *Cmd) +{ + char * pEnd; + UsbCommand c = {CMD_HF_SNIFFER, {strtol(Cmd, &pEnd,0),strtol(pEnd, &pEnd,0),0}}; + SendCommand(&c); + return 0; +} + static command_t CommandTable[] = { -<<<<<<< HEAD {"help", CmdHelp, 1, "This help"}, {"14a", CmdHF14A, 1, "{ ISO14443A RFIDs... }"}, {"14b", CmdHF14B, 1, "{ ISO14443B RFIDs... }"}, @@ -703,22 +709,9 @@ 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 [preliminary]"}, + {"snoop", CmdHFSnoop, 0, " Generic HF Snoop"}, {NULL, NULL, 0, NULL} -======= - {"help", CmdHelp, 1, "This help"}, - {"14a", CmdHF14A, 1, "{ ISO14443A RFIDs... }"}, - {"14b", CmdHF14B, 1, "{ ISO14443B RFIDs... }"}, - {"15", CmdHF15, 1, "{ ISO15693 RFIDs... }"}, - {"epa", CmdHFEPA, 1, "{ German Identification Card... }"}, - {"legic", CmdHFLegic, 0, "{ LEGIC RFIDs... }"}, - {"iclass", CmdHFiClass, 1, "{ ICLASS RFIDs... }"}, - {"mf", CmdHFMF, 1, "{ MIFARE RFIDs... }"}, - {"mfu", CmdHFMFUltra, 1, "{ MIFARE Ultralight 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 [preliminary]"}, - {NULL, NULL, 0, NULL} ->>>>>>> master }; int CmdHF(const char *Cmd)