X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/bdf387c7ef7d9c2c30c06a1c26583e1326504a94..19d9376c1670efa52061b571e865bd8c5e57808a:/client/cmdlf.c diff --git a/client/cmdlf.c b/client/cmdlf.c index 07f3ac98..f2a9bb38 100644 --- a/client/cmdlf.c +++ b/client/cmdlf.c @@ -497,24 +497,24 @@ int CmdLFSetConfig(const char *Cmd) { cmdp++; break; case 'q': - errors |= param_getdec(Cmd,cmdp+1,&divisor); + errors |= param_getdec(Cmd, cmdp+1, &divisor); cmdp+=2; break; case 't': - errors |= param_getdec(Cmd,cmdp+1,&unsigned_trigg); + errors |= param_getdec(Cmd, cmdp+1, &unsigned_trigg); cmdp+=2; if(!errors) trigger_threshold = unsigned_trigg; break; case 'b': - errors |= param_getdec(Cmd,cmdp+1,&bps); + errors |= param_getdec(Cmd, cmdp+1, &bps); cmdp+=2; break; case 'd': - errors |= param_getdec(Cmd,cmdp+1,&decimation); + errors |= param_getdec(Cmd, cmdp+1, &decimation); cmdp+=2; break; case 'a': - averaging = param_getchar(Cmd,cmdp+1) == '1'; + averaging = param_getchar(Cmd, cmdp+1) == '1'; cmdp+=2; break; default: @@ -531,14 +531,13 @@ int CmdLFSetConfig(const char *Cmd) { //Validations if (errors) return usage_lf_config(); - //Bps is limited to 8, so fits in lower half of arg1 + //Bps is limited to 8 if (bps >> 4) bps = 8; sample_config config = { decimation, bps, averaging, divisor, trigger_threshold }; - //Averaging is a flag on high-bit of arg[1] - UsbCommand c = {CMD_SET_LF_SAMPLING_CONFIG}; - memcpy(c.d.asBytes,&config,sizeof(sample_config)); + UsbCommand c = {CMD_SET_LF_SAMPLING_CONFIG, {0,0,0} }; + memcpy(c.d.asBytes, &config, sizeof(sample_config)); clearCommandBuffer(); SendCommand(&c); return 0; @@ -1005,6 +1004,7 @@ int CmdVchDemod(const char *Cmd) { //by marshmellow int CmdLFfind(const char *Cmd) { int ans = 0; + size_t minLength = 1000; char cmdp = param_getchar(Cmd, 0); char testRaw = param_getchar(Cmd, 1); if (strlen(Cmd) > 3 || cmdp == 'h' || cmdp == 'H') return usage_lf_find(); @@ -1012,21 +1012,38 @@ int CmdLFfind(const char *Cmd) { if (!offline && (cmdp != '1')){ CmdLFRead("s"); getSamples("30000", false); - } else if (GraphTraceLen < 1000) { + } else if (GraphTraceLen < minLength) { PrintAndLog("Data in Graphbuffer was too small."); return 0; } if (cmdp == 'u' || cmdp == 'U') testRaw = 'u'; - // if ( justNoise(GraphBuffer, GraphTraceLen) ) { - // PrintAndLog("Signal looks just like noise. Quitting."); - // return 0; - // } - 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"); + size_t testLen = minLength; + + // only run these tests if device is online + if (!offline && (cmdp != '1')){ + + // only run if graphbuffer is just noise as it should be for hitag/cotag + if (graphJustNoise(GraphBuffer, testLen)) { + + ans=CmdLFHitagReader("26"); + if (ans==0) + return 1; + + ans=CmdCOTAGRead(""); + if (ans>0){ + PrintAndLog("\nValid COTAG ID Found!"); + return 1; + } + PrintAndLog("Signal looks just like noise. Quitting."); + return 0; + } + } + ans=CmdFSKdemodIO(""); if (ans>0) { PrintAndLog("\nValid IO Prox ID Found!"); @@ -1117,17 +1134,8 @@ int CmdLFfind(const char *Cmd) { PrintAndLog("\nValid Presco ID Found!"); return 1; } - // TIdemod? - -/* - if (!offline && (cmdp != '1')){ - ans=CmdLFHitagReader("26"); - if (ans==0) { - return 1; - } - } -*/ + // TIdemod? PrintAndLog("\nNo Known Tags Found!\n"); if (testRaw=='u' || testRaw=='U'){ //test unknown tag formats (raw mode)