]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlf.c
Merge pull request #1 from bforbort/master
[proxmark3-svn] / client / cmdlf.c
index 2f55cd22caa5d972b4fd1e4890de002931e527c0..8257a5b392abeb66a42395630e277d6909de503c 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,51 @@ int CmdVchDemod(const char *Cmd)
   return 0;
 }
 
+//by marshmellow
+int CmdLFfind(const char *Cmd)
+{
+       int ans = 0;
+       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;
+       }
+
+       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" );
+
+       if (!ans)
+               PrintAndLog("No Known Tags Found!\n");
+               
+       return 0;
+}
+
 static command_t CommandTable[] = 
 {
   {"help",        CmdHelp,            1, "This help"},
@@ -576,12 +625,13 @@ 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"},
   {"snoop",       CmdLFSnoop,         0, "['l'|'h'|<divisor>] [trigger threshold]-- Snoop LF (l:125khz, h:134khz)"},
   
-  {"avid",        CmdLFAWID26,        1, "{ AWID26 tags }"},
+  {"awid26",        CmdLFAWID26,        1, "{ AWID26 tags }"},
   {"em4x",        CmdLFEM4X,          1, "{ EM4X tags }"},      
   {"hid",         CmdLFHID,           1, "{ HID tags }"},
   {"hitag",       CmdLFHitag,         1, "{ Hitag tags and transponders }"},
Impressum, Datenschutz