]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdhf.c
FIX: increased the limit to 0xE6 for MIFARE_ULEV1_FASTREAD
[proxmark3-svn] / client / cmdhf.c
index 6cd65fd6e8fd7255ebb72818a8d43dd433e24a37..39907b7483f28542566baab1668b73a622d9fdee 100644 (file)
@@ -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)
 {
@@ -88,31 +90,37 @@ void annotateIso14443a(char *exp, size_t size, uint8_t* cmd, uint8_t cmdsize)
        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_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 +282,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 +658,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 +689,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}
 };
 
Impressum, Datenschutz