return 0;
}
int usage_lf_snoop(void) {
- PrintAndLog("Usage: lf snoop");
+ PrintAndLog("Snoop low frequence signal. Use 'lf config' to set parameters.");
+ PrintAndLog("Usage: lf snoop [h]");
PrintAndLog("Options:");
- PrintAndLog(" h This help");
- PrintAndLog("This function takes no arguments. ");
- PrintAndLog("Use 'lf config' to set parameters.");
+ PrintAndLog(" h This help");
return 0;
}
int usage_lf_config(void) {
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:
//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;
UsbCommand c = {CMD_ACQUIRE_RAW_ADC_SAMPLES_125K, {arg1,0,0}};
clearCommandBuffer();
SendCommand(&c);
- if ( !WaitForResponseTimeout(CMD_ACK,NULL,2500) ) {
+ if ( !WaitForResponseTimeout(CMD_ACK, NULL ,2500) ) {
PrintAndLog("command execution time out");
return 1;
}
uint8_t cmdp = param_getchar(Cmd, 0);
if(cmdp == 'h' || cmdp == 'H') return usage_lf_snoop();
- UsbCommand c = {CMD_LF_SNOOP_RAW_ADC_SAMPLES};
+ UsbCommand c = {CMD_LF_SNOOP_RAW_ADC_SAMPLES,{0,0,0}};
clearCommandBuffer();
SendCommand(&c);
WaitForResponse(CMD_ACK,NULL);
+ getSamples("", false);
return 0;
}
//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();
if (!offline && (cmdp != '1')){
CmdLFRead("s");
- getSamples("30000", TRUE);
- } else if (GraphTraceLen < 1000) {
+ getSamples("30000", false);
+ } 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!");
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)
{"simfsk", CmdLFfskSim, 0, "[c <clock>] [i] [H <fcHigh>] [L <fcLow>] [d <hexdata>] \n\t\t-- Simulate LF FSK tag from demodbuffer or input"},
{"simpsk", CmdLFpskSim, 0, "[1|2|3] [c <clock>] [i] [r <carrier>] [d <raw hex to sim>] \n\t\t-- Simulate LF PSK tag from demodbuffer or input"},
{"simbidir", CmdLFSimBidir, 0, "Simulate LF tag (with bidirectional data transmission between reader and tag)"},
- {"snoop", CmdLFSnoop, 0, "['l'|'h'|<divisor>] [trigger threshold]-- Snoop LF (l:125khz, h:134khz)"},
+ {"snoop", CmdLFSnoop, 0, "Snoop LF"},
{"vchdemod", CmdVchDemod, 1, "['clone'] -- Demodulate samples for VeriChip"},
{NULL, NULL, 0, NULL}
};