]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdhf.c
- Little change to description in client
[proxmark3-svn] / client / cmdhf.c
index 8853a7f3f3022f11c5ac773f53c9831d50268ba1..b1e670059a849d0758c79a350b36a8a5a95dd361 100644 (file)
@@ -85,7 +85,12 @@ 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 ( cmdsize >=3 && cmd[2] <= 0xE6)
                        snprintf(exp,size,"READ RANGE (%d-%d)",cmd[1],cmd[2]); 
@@ -373,7 +378,7 @@ uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, ui
                        oddparity ^= (((frame[j] & 0xFF) >> k) & 0x01);
                }
                uint8_t parityBits = parityBytes[j>>3];
-               if (isResponse && (oddparity != ((parityBits >> (7-(j&0x0007))) & 0x01))) {
+               if (protocol != ISO_14443B && (isResponse || protocol == ISO_14443A) && (oddparity != ((parityBits >> (7-(j&0x0007))) & 0x01))) {
                        snprintf(line[j/16]+(( j % 16) * 4),110, "%02x! ", frame[j]);
 
                } else {
@@ -551,23 +556,31 @@ int CmdHFSearch(const char *Cmd){
        if (ans > 0) {
                PrintAndLog("\nValid ISO14443A Tag Found - Quiting Search\n");
                return ans;
-       } 
+       }
        ans = HFiClassReader("", false, false);
        if (ans) {
                PrintAndLog("\nValid iClass Tag (or PicoPass Tag) Found - Quiting Search\n");
                return ans;
        }
+       ans = HF14BInfo(false);
+       if (ans) {
+               PrintAndLog("\nValid ISO14443B Tag Found - Quiting Search\n");
+               return ans;
+       }
        ans = HF15Reader("", false);
        if (ans) {
                PrintAndLog("\nValid ISO15693 Tag Found - Quiting Search\n");
                return ans;
        }
+       PrintAndLog("\nno known/supported 13.56 MHz tags found\n");
+       return 0;
+}
 
-
-       //14b has issues currently...
-       //ans = CmdHF14BRead(Cmd);
-       //if (ans > 0) return ans;
-
+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;
 }
 
@@ -585,7 +598,8 @@ static command_t CommandTable[] =
   {"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}
+  {"snoop",       CmdHFSnoop,       0, "<samples to skip (10000)> <triggers to skip (1)> Generic HF Snoop"},
+  {NULL, NULL, 0, NULL}
 };
 
 int CmdHF(const char *Cmd)
Impressum, Datenschutz