]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlf.c
CHG: removed a delay in readblock
[proxmark3-svn] / client / cmdlf.c
index c5ad653a7b9d408128b80721b53ab65a89774383..4c586a19c2748ad4aff12d90fc35ee51970ce451 100644 (file)
@@ -249,8 +249,9 @@ int CmdFlexdemod(const char *Cmd)
   
 int CmdIndalaDemod(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
        // Usage: recover 64bit UID by default, specify "224" as arg to recover a 224bit UID
-
        int state = -1;
        int count = 0;
        int i, j;
        int state = -1;
        int count = 0;
        int i, j;
@@ -293,12 +294,11 @@ int CmdIndalaDemod(const char *Cmd)
                        count = 0;
                }
        }
                        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);
                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
        }
 
        // Finding the start of a UID
@@ -326,15 +326,14 @@ int CmdIndalaDemod(const char *Cmd)
        }
   
        if (start == rawbit - uidlen + 1) {
        }
   
        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) {
                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];
                        rawbits[i] = !rawbits[i];
-               }
        }
 
        // Dumping UID
        }
 
        // Dumping UID
@@ -413,7 +412,7 @@ int CmdIndalaDemod(const char *Cmd)
                times += 1;
        }
 
                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) 
 
        // Remodulating for tag cloning
        // HACK: 2015-01-04 this will have an impact on our new way of seening lf commands (demod) 
@@ -596,21 +595,24 @@ int CmdLFSim(const char *Cmd) {
        // convert to bitstream if necessary 
        ChkBitstream(Cmd);
 
        // convert to bitstream if necessary 
        ChkBitstream(Cmd);
 
+       if (g_debugMode) 
+               printf("DEBUG: Sending [%d bytes]\n", GraphTraceLen);
+       
        //can send only 512 bits at a time (1 byte sent per bit...)
        //can send only 512 bits at a time (1 byte sent per bit...)
-       printf("Sending [%d bytes]", GraphTraceLen);
        for (i = 0; i < GraphTraceLen; i += USB_CMD_DATA_SIZE) {
                UsbCommand c = {CMD_DOWNLOADED_SIM_SAMPLES_125K, {i, 0, 0}};
 
        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];
                        c.d.asBytes[j] = GraphBuffer[i+j];
-               }
+
                clearCommandBuffer();
                SendCommand(&c);
                WaitForResponse(CMD_ACK, NULL);
                printf(".");
        }
 
                clearCommandBuffer();
                SendCommand(&c);
                WaitForResponse(CMD_ACK, NULL);
                printf(".");
        }
 
-       PrintAndLog("\nStarting to simulate");
+       PrintAndLog("Simulating");
+
        UsbCommand c = {CMD_SIMULATE_TAG_125K, {GraphTraceLen, gap, 0}};
        clearCommandBuffer();
        SendCommand(&c);
        UsbCommand c = {CMD_SIMULATE_TAG_125K, {GraphTraceLen, gap, 0}};
        clearCommandBuffer();
        SendCommand(&c);
@@ -730,6 +732,7 @@ int CmdLFaskSim(const char *Cmd)
        
        while(param_getchar(Cmd, cmdp) != 0x00) {
                switch(param_getchar(Cmd, cmdp)) {
        
        while(param_getchar(Cmd, cmdp) != 0x00) {
                switch(param_getchar(Cmd, cmdp)) {
+                       case 'H':
                        case 'h': return usage_lf_simask();
                        case 'i':
                                invert = 1;
                        case 'h': return usage_lf_simask();
                        case 'i':
                                invert = 1;
@@ -788,7 +791,7 @@ int CmdLFaskSim(const char *Cmd)
                setDemodBuf(data, dataLen, 0);
        }
        if (clk == 0) clk = 64;
                setDemodBuf(data, dataLen, 0);
        }
        if (clk == 0) clk = 64;
-       if (encoding == 0) clk = clk/2; //askraw needs to double the clock speed
+       if (encoding == 0) clk >>= 2; //askraw needs to double the clock speed
        
        size_t size = DemodBufferLen;
 
        
        size_t size = DemodBufferLen;
 
@@ -1008,13 +1011,18 @@ int CmdLFfind(const char *Cmd) {
 
        if (!offline && (cmdp != '1')){
                CmdLFRead("s");
 
        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';
 
        } 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");
        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");
@@ -1079,6 +1087,11 @@ int CmdLFfind(const char *Cmd) {
                PrintAndLog("\nValid NexWatch ID Found!");
                return 1;
        }
                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!");
        ans=CmdJablotronDemod("");
        if (ans>0) {
                PrintAndLog("\nValid Jablotron ID Found!");
@@ -1089,6 +1102,21 @@ int CmdLFfind(const char *Cmd) {
                PrintAndLog("\nValid NEDAP ID Found!");
                return 1;
        }
                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?
        
 
        // TIdemod?
        
 
@@ -1156,20 +1184,24 @@ int CmdLFfind(const char *Cmd) {
 static command_t CommandTable[] = 
 {
        {"help",        CmdHelp,            1, "This help"},
 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... }"},
        {"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... }"},
        {"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... }"},
        {"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"},
        {"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