X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/f5ed4d12de19dcf59a3d5ecdcd9f75f5c747dd3e..0a966150a0bf41466c3c3e0e39672892bf6bdd01:/client/cmdlf.c diff --git a/client/cmdlf.c b/client/cmdlf.c index 2f55cd22..8257a5b3 100644 --- a/client/cmdlf.c +++ b/client/cmdlf.c @@ -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 ] -- 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, " [GAP] Simulate arbitrary Manchester LF tag"}, {"snoop", CmdLFSnoop, 0, "['l'|'h'|] [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 }"},