X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/4118b74dc8834bd2f45002ca6b781ce7cfae6d0c..81740aa519046d407faa39411973347db593f0b7:/client/cmdlf.c diff --git a/client/cmdlf.c b/client/cmdlf.c index b3986897..491fd082 100644 --- a/client/cmdlf.c +++ b/client/cmdlf.c @@ -19,6 +19,7 @@ #include "cmdparser.h" #include "cmdmain.h" #include "cmddata.h" +#include "util.h" #include "cmdlf.h" #include "cmdlfhid.h" #include "cmdlfti.h" @@ -56,7 +57,7 @@ int CmdFlexdemod(const char *Cmd) } } - #define LONG_WAIT 100 +#define LONG_WAIT 100 int start; for (start = 0; start < GraphTraceLen - LONG_WAIT; start++) { int first = GraphBuffer[start]; @@ -380,10 +381,8 @@ static void ChkBitstream(const char *str) int i; /* convert to bitstream if necessary */ - for (i = 0; i < (int)(GraphTraceLen / 2); i++) - { - if (GraphBuffer[i] > 1 || GraphBuffer[i] < 0) - { + for (i = 0; i < (int)(GraphTraceLen / 2); i++){ + if (GraphBuffer[i] > 1 || GraphBuffer[i] < 0) { CmdBitstream(str); break; } @@ -392,7 +391,7 @@ static void ChkBitstream(const char *str) int CmdLFSim(const char *Cmd) { - int i; + int i,j; static int gap; sscanf(Cmd, "%i", &gap); @@ -400,18 +399,20 @@ int CmdLFSim(const char *Cmd) /* convert to bitstream if necessary */ ChkBitstream(Cmd); - PrintAndLog("Sending data, please wait..."); - for (i = 0; i < GraphTraceLen; i += 48) { + 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}}; - int j; - for (j = 0; j < 48; j++) { + + for (j = 0; j < USB_CMD_DATA_SIZE; j++) { c.d.asBytes[j] = GraphBuffer[i+j]; } SendCommand(&c); WaitForResponse(CMD_ACK,NULL); + printf("."); } - PrintAndLog("Starting simulator..."); + printf("\n"); + PrintAndLog("Starting to simulate"); UsbCommand c = {CMD_SIMULATE_TAG_125K, {GraphTraceLen, gap, 0}}; SendCommand(&c); return 0; @@ -464,7 +465,7 @@ int CmdLFSnoop(const char *Cmd) sscanf(Cmd, "h %"lli, &c.arg[1]); } else if (sscanf(Cmd, "%"lli" %"lli, &c.arg[0], &c.arg[1]) < 1) { PrintAndLog("usage 1: snoop"); - PrintAndLog(" 2: snoop {l,h} [trigger threshold]"); + PrintAndLog(" 2: snoop [trigger threshold]"); PrintAndLog(" 3: snoop [trigger threshold]"); return 0; } @@ -554,17 +555,30 @@ int CmdVchDemod(const char *Cmd) int CmdLFfind(const char *Cmd) { int ans=0; - if (!offline){ + char cmdp = param_getchar(Cmd, 0); + + if (strlen(Cmd) > 1 || cmdp == 'h' || cmdp == 'H') { + PrintAndLog("Usage: lf search <0|1>"); + PrintAndLog(" , 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(""); ans=CmdSamples("20000"); + } else if (GraphTraceLen < 1000) { + PrintAndLog("Data in Graphbuffer was too small."); + return 0; } - if (GraphTraceLen<1000) return 0; + PrintAndLog("NOTE: some demods output possible binary\n if it finds something that looks like a tag"); PrintAndLog("Checking for known tags:"); - - ans=Cmdaskmandemod(""); + ans=CmdFSKdemodIO(""); if (ans>0) { - PrintAndLog("Valid EM410x ID Found!"); + PrintAndLog("Valid IO Prox ID Found!"); return 1; } ans=CmdFSKdemodHID(""); @@ -572,19 +586,17 @@ int CmdLFfind(const char *Cmd) PrintAndLog("Valid HID Prox ID Found!"); return 1; } - ans=CmdFSKdemodIO(""); + //add psk and indala + ans=CmdIndalaDecode("0"); if (ans>0) { - PrintAndLog("Valid IO Prox ID Found!"); + PrintAndLog("Valid Indala ID Found!"); return 1; } - //add psk and indala - ans=CmdIndalaDecode(""); + ans=Cmdaskmandemod(""); if (ans>0) { - PrintAndLog("Valid Indala ID Found!"); + PrintAndLog("Valid EM410x ID Found!"); return 1; } - // ans=CmdIndalaDemod("224"); - // if (ans>0) return 1; PrintAndLog("No Known Tags Found!\n"); return 0; }