]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlf.c
ADD: 'lf search' - added @marshmellow42 's hitag2 identification
[proxmark3-svn] / client / cmdlf.c
index dde05cb3d7b49be0acd14d07f463908cfa7dafff..43131428df70bcc7e8d7df52263a3c23bf278d50 100644 (file)
@@ -249,8 +249,9 @@ int CmdFlexdemod(const char *Cmd)
   
 int CmdIndalaDemod(const char *Cmd)
 {
+       // PSK1, Bitrate 32, 
+       
        // Usage: recover 64bit UID by default, specify "224" as arg to recover a 224bit UID
-
        int state = -1;
        int count = 0;
        int i, j;
@@ -293,12 +294,11 @@ int CmdIndalaDemod(const char *Cmd)
                        count = 0;
                }
        }
+       if ( rawbit<1 ) return 0;
 
-       if ( rawbit>0 ){
+       if (g_debugMode) {
                PrintAndLog("Recovered %d raw bits, expected: %d", rawbit, GraphTraceLen/32);
                PrintAndLog("worst metric (0=best..7=worst): %d at pos %d", worst, worstPos);
-       } else {
-               return 0;
        }
 
        // Finding the start of a UID
@@ -326,15 +326,14 @@ int CmdIndalaDemod(const char *Cmd)
        }
   
        if (start == rawbit - uidlen + 1) {
-               PrintAndLog("nothing to wait for");
+               if (g_debugMode) PrintAndLog("nothing to wait for");
                return 0;
        }
 
        // Inverting signal if needed
        if (first == 1) {
-               for (i = start; i < rawbit; i++) {
+               for (i = start; i < rawbit; i++)
                        rawbits[i] = !rawbits[i];
-               }
        }
 
        // Dumping UID
@@ -413,7 +412,7 @@ int CmdIndalaDemod(const char *Cmd)
                times += 1;
        }
 
-       PrintAndLog("Occurrences: %d (expected %d)", times, (rawbit - start) / uidlen);
+       if (g_debugMode) PrintAndLog("Occurrences: %d (expected %d)", times, (rawbit - start) / uidlen);
 
        // Remodulating for tag cloning
        // HACK: 2015-01-04 this will have an impact on our new way of seening lf commands (demod) 
@@ -603,16 +602,16 @@ int CmdLFSim(const char *Cmd) {
        for (i = 0; i < GraphTraceLen; i += USB_CMD_DATA_SIZE) {
                UsbCommand c = {CMD_DOWNLOADED_SIM_SAMPLES_125K, {i, 0, 0}};
 
-               for (j = 0; j < USB_CMD_DATA_SIZE; j++) {
+               for (j = 0; j < USB_CMD_DATA_SIZE; j++)
                        c.d.asBytes[j] = GraphBuffer[i+j];
-               }
+
                clearCommandBuffer();
                SendCommand(&c);
                WaitForResponse(CMD_ACK, NULL);
                printf(".");
        }
 
-       PrintAndLog("Starting to simulate");
+       PrintAndLog("Simulating");
 
        UsbCommand c = {CMD_SIMULATE_TAG_125K, {GraphTraceLen, gap, 0}};
        clearCommandBuffer();
@@ -1012,13 +1011,18 @@ int CmdLFfind(const char *Cmd) {
 
        if (!offline && (cmdp != '1')){
                CmdLFRead("s");
-               getSamples("30000",false);
+               getSamples("30000", TRUE);
        } else if (GraphTraceLen < 1000) {
                PrintAndLog("Data in Graphbuffer was too small.");
                return 0;
        }
        if (cmdp == 'u' || cmdp == 'U') testRaw = 'u';
 
+       // if ( justNoise(GraphBuffer, GraphTraceLen) ) {
+               // PrintAndLog("Signal looks just like noise. Quitting.");
+               // return 0;
+       // }
+       
        PrintAndLog("NOTE: some demods output possible binary\n  if it finds something that looks like a tag");
        PrintAndLog("False Positives ARE possible\n");  
        PrintAndLog("\nChecking for known tags:\n");
@@ -1083,6 +1087,11 @@ int CmdLFfind(const char *Cmd) {
                PrintAndLog("\nValid NexWatch ID Found!");
                return 1;
        }
+       ans=CmdPSKIdteck("");
+       if (ans>0) {
+               PrintAndLog("\nValid Idteck ID Found!");
+               return 1;
+       }
        ans=CmdJablotronDemod("");
        if (ans>0) {
                PrintAndLog("\nValid Jablotron ID Found!");
@@ -1093,8 +1102,29 @@ int CmdLFfind(const char *Cmd) {
                PrintAndLog("\nValid NEDAP ID Found!");
                return 1;
        }
+       ans=CmdVisa2kDemod("");
+       if (ans>0) {
+               PrintAndLog("\nValid Visa2000 ID Found!");
+               return 1;
+       }
+       ans=CmdNoralsyDemod("");
+       if (ans>0) {
+               PrintAndLog("\nValid Noralsy ID Found!");
+               return 1;
+       }
+       ans=CmdPrescoDemod("");
+       if (ans>0) {
+               PrintAndLog("\nValid Presco ID Found!");
+               return 1;
+       }
        // TIdemod?
        
+       if (!offline && (cmdp != '1')){
+               ans=CmdLFHitagReader("26");
+               if (ans==0) {
+                       return 1;
+               }
+       }
 
        PrintAndLog("\nNo Known Tags Found!\n");
        if (testRaw=='u' || testRaw=='U'){
@@ -1160,20 +1190,24 @@ int CmdLFfind(const char *Cmd) {
 static command_t CommandTable[] = 
 {
        {"help",        CmdHelp,            1, "This help"},
+       {"animal",      CmdLFFdx,           1, "{ Animal RFIDs... }"},
        {"awid",        CmdLFAWID,          1, "{ AWID RFIDs... }"},
        {"em4x",        CmdLFEM4X,          1, "{ EM4X RFIDs... }"},
        {"guard",       CmdLFGuard,         1, "{ Guardall RFIDs... }"},
        {"hid",         CmdLFHID,           1, "{ HID RFIDs... }"},
        {"hitag",       CmdLFHitag,         1, "{ HITAG RFIDs... }"},
+//     {"indala",              CmdLFIndala,            1, "{ Indala RFIDs... }"},
        {"io",                  CmdLFIO,                        1, "{ IOPROX RFIDs... }"},
-       {"jablotron",   CmdLFJablotron,         1, "{ JABLOTRON RFIDs... }"},
-       {"nedap",               CmdLFNedap,                     1, "{ NEDAP RFIDs... }"},
+       {"jablotron",   CmdLFJablotron,         1, "{ Jablotron RFIDs... }"},
+       {"nedap",               CmdLFNedap,                     1, "{ Nedap RFIDs... }"},
+       {"noralsy",             CmdLFNoralsy,           1, "{ Noralsy RFIDs... }"},     
        {"pcf7931",     CmdLFPCF7931,       1, "{ PCF7931 RFIDs... }"},
        {"presco",      CmdLFPresco,        1, "{ Presco RFIDs... }"},
        {"pyramid",             CmdLFPyramid,       1, "{ Farpointe/Pyramid RFIDs... }"},       
        {"ti",          CmdLFTI,            1, "{ TI RFIDs... }"},
        {"t55xx",       CmdLFT55XX,         1, "{ T55xx RFIDs... }"},
        {"viking",      CmdLFViking,        1, "{ Viking RFIDs... }"},
+       {"visa2000",    CmdLFVisa2k,        1, "{ Visa2000 RFIDs... }"},
        {"config",      CmdLFSetConfig,     0, "Set config for LF sampling, bit/sample, decimation, frequency"},
        {"cmdread",     CmdLFCommandRead,   0, "<off period> <'0' period> <'1' period> <command> ['h' 134] \n\t\t-- Modulate LF reader field to send command before read (all periods in microseconds)"},
        {"flexdemod",   CmdFlexdemod,       1, "Demodulate samples for FlexPass"},
Impressum, Datenschutz