]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlf.c
CHG: modified cmdlf.c - CmdLFfind with a parameter to accept traces loaded with...
[proxmark3-svn] / client / cmdlf.c
index faf95ccdfe25b4054ffb1e43f5363ae3c1a4acd2..14d8d2159f31fa17ffd2542540165157e7e061ec 100644 (file)
@@ -171,9 +171,10 @@ int CmdIndalaDemod(const char *Cmd)
       count = 0;
     }
   }
-  PrintAndLog("Recovered %d raw bits", rawbit);
+  if (rawbit>0){
+    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
   int uidlen, long_wait;
   if (strcmp(Cmd, "224") == 0) {
@@ -303,7 +304,7 @@ int CmdIndalaDemod(const char *Cmd)
   }
 
   RepaintGraphWindow();
-  return 0;
+  return 1;
 }
 
 int CmdIndalaClone(const char *Cmd)
@@ -371,6 +372,9 @@ int CmdLFRead(const char *Cmd)
   }
   SendCommand(&c);
   WaitForResponse(CMD_ACK,NULL);
+  
+  // load samples 
+  CmdSamples("");
   return 0;
 }
 
@@ -564,6 +568,49 @@ int CmdVchDemod(const char *Cmd)
   return 0;
 }
 
+//by marshmellow
+int CmdLFfind(const char *Cmd)
+{
+       char cmdp = param_getchar(Cmd, 0);
+
+       if (strlen(Cmd) > 1 || cmdp == 'h' || cmdp == 'H') {
+               PrintAndLog("Usage:  lf search [use data from Graphbuffer]");
+               PrintAndLog("     [use data from Graphbuffer], if not set, try reading data from tag.");
+               PrintAndLog("");
+               PrintAndLog("    sample: lf search");
+               PrintAndLog("          : lf search 1");
+               return 0;
+       }
+       
+       int ans = 0;
+       if (!offline && cmdp != '1' ){
+               ans = CmdLFRead("");
+       } else if (GraphTraceLen<1000) {
+               PrintAndLog("Data in Graphbuffer was too small.");
+               return 0;
+       }
+
+       PrintAndLog("Checking for known tags:");
+
+       ans=Cmdaskmandemod("");
+       PrintAndLog("ASK_MAN: %s", (ans)?"YES":"NO" );
+
+       ans=CmdFSKdemodHID("");
+       PrintAndLog("HID: %s", (ans)?"YES":"NO" );
+
+       ans=CmdFSKdemodIO("");
+       PrintAndLog("IO prox: %s", (ans)?"YES":"NO" );
+
+       ans=CmdIndalaDemod("");
+       PrintAndLog("Indala (64): %s", (ans)?"YES":"NO" );
+
+       ans=CmdIndalaDemod("224");
+       PrintAndLog("Indala (224): %s", (ans)?"YES":"NO" );
+
+       //PrintAndLog("No Known Tags Found!\n");
+       return 0;
+}
+
 static command_t CommandTable[] = 
 {
   {"help",        CmdHelp,            1, "This help"},
@@ -576,6 +623,7 @@ static command_t CommandTable[] =
 
   
   {"read",        CmdLFRead,          0, "['h' or <divisor>] -- Read 125/134 kHz LF ID-only tag (option 'h' for 134, alternatively: f=12MHz/(divisor+1))"},
+  {"search",      CmdLFfind,          1, "Read and Search for valid known tag (in offline mode it you can load first then search)"},
   {"sim",         CmdLFSim,           0, "[GAP] -- Simulate LF tag from buffer with optional GAP (in microseconds)"},
   {"simbidir",    CmdLFSimBidir,      0, "Simulate LF tag (with bidirectional data transmission between reader and tag)"},
   {"simman",      CmdLFSimManchester, 0, "<Clock> <Bitstream> [GAP] Simulate arbitrary Manchester LF tag"},
Impressum, Datenschutz