]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
ADD: cmdlf autocorrelations, also gives a hint to how many bytes the possible correl...
authoriceman1001 <iceman@iuse.se>
Wed, 18 Mar 2015 19:32:53 +0000 (20:32 +0100)
committericeman1001 <iceman@iuse.se>
Wed, 18 Mar 2015 19:32:53 +0000 (20:32 +0100)
CHG: "LF SEARCH 1 U" didn't work since the strcmp was too short. Increased length of check.
FIX: @marshmellows fix for faulty em410xdecoding of length less than 64.

client/cmdlf.c
common/lfdemod.c

index 988bda36543d307bf900e2d337b7f8dd07a518ec..46927f74a153ccf1dadb9ab86e3e6ece3d33fe88 100644 (file)
@@ -1021,7 +1021,7 @@ int CmdLFfind(const char *Cmd)
   int ans=0;
   char cmdp = param_getchar(Cmd, 0);
   char testRaw = param_getchar(Cmd, 1);
-  if (strlen(Cmd) > 2 || cmdp == 'h' || cmdp == 'H') {
+  if (strlen(Cmd) > 3 || cmdp == 'h' || cmdp == 'H') {
     PrintAndLog("Usage:  lf search <0|1> [u]");
     PrintAndLog("     <use data from Graphbuffer> , if not set, try reading data from tag.");
     PrintAndLog("     [Search for Unknown tags] , if not set, reads only known tags.");
@@ -1030,7 +1030,6 @@ int CmdLFfind(const char *Cmd)
     PrintAndLog("          : lf search 1   = use data from GraphBuffer & search for known tags");
     PrintAndLog("          : lf search u   = try reading data from tag & search for known and unknown tags");
     PrintAndLog("          : lf search 1 u = use data from GraphBuffer & search for known and unknown tags");
-
     return 0;
   }
 
@@ -1042,29 +1041,36 @@ int CmdLFfind(const char *Cmd)
     return 0;
   }
   if (cmdp == 'u' || cmdp == 'U') testRaw = 'u';
+  
   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");
+  
   ans=CmdFSKdemodIO("");
+  
   if (ans>0) {
     PrintAndLog("\nValid IO Prox ID Found!");
     return 1;
   }
+  
   ans=CmdFSKdemodPyramid("");
   if (ans>0) {
     PrintAndLog("\nValid Pyramid ID Found!");
     return 1;
   }
+  
   ans=CmdFSKdemodParadox("");
   if (ans>0) {
     PrintAndLog("\nValid Paradox ID Found!");
     return 1;
   }
+  
   ans=CmdFSKdemodAWID("");
   if (ans>0) {
     PrintAndLog("\nValid AWID ID Found!");
     return 1;
   }
+  
   ans=CmdFSKdemodHID("");
   if (ans>0) {
     PrintAndLog("\nValid HID Prox ID Found!");
@@ -1091,7 +1097,33 @@ int CmdLFfind(const char *Cmd)
     //test unknown tag formats (raw mode)
     PrintAndLog("\nChecking for Unknown tags:\n");
     ans=AutoCorrelate(4000, FALSE, FALSE);
-    if (ans > 0) PrintAndLog("Possible Auto Correlation of %d repeating samples",ans);
+       
+    if (ans > 0) {
+
+               PrintAndLog("Possible Auto Correlation of %d repeating samples",ans);
+
+               if ( ans % 8 == 0)  {
+                       int bytes = (ans / 8);
+                       PrintAndLog("Possible %d bytes", bytes);
+                       int blocks = 0;
+                       if ( bytes % 2 == 0) {
+                               blocks = (bytes / 2);   
+                               PrintAndLog("Possible  2 blocks, width %d", blocks);
+                       }
+                       if ( bytes % 4 == 0) {
+                               blocks = (bytes / 4);   
+                               PrintAndLog("Possible  4 blocks, width %d", blocks);
+                       }
+                       if ( bytes % 8 == 0) {
+                               blocks = (bytes / 8);   
+                               PrintAndLog("Possible  8 blocks, width %d", blocks);
+                       }
+                       if ( bytes % 16 == 0) {
+                               blocks = (bytes / 16);  
+                               PrintAndLog("Possible 16 blocks, width %d", blocks);
+                       }
+               }
+       }
     ans=GetFskClock("",FALSE,FALSE); //CmdDetectClockRate("F"); //
     if (ans != 0){ //fsk
       ans=FSKrawDemod("",FALSE);
index 12f380d586f15225f1f2d4efdbb3834b170af2db..5b90f1c4a2eef6d20942c5e685085a9132e7c348 100644 (file)
@@ -142,6 +142,7 @@ uint8_t Em410xDecode(uint8_t *BitStream, size_t *size, size_t *startIdx, uint32_
   for (uint8_t extraBitChk=0; extraBitChk<5; extraBitChk++){
     errChk = preambleSearch(BitStream+extraBitChk+*startIdx, preamble, sizeof(preamble), size, startIdx);
     if (errChk == 0) return 0;
+       if (*size<64) return 0;
     if (*size>64) FmtLen = 22;
     idx = *startIdx + 9;
     for (i=0; i<FmtLen; i++){ //loop through 10 or 22 sets of 5 bits (50-10p = 40 bits or 88 bits)
Impressum, Datenschutz