ADD: 'lf search' - @marshmellow42 's check if signal is noice.

This commit is contained in:
iceman1001 2017-02-04 12:41:30 +01:00
parent cf5a79de33
commit 3f84d47369
3 changed files with 39 additions and 23 deletions

View file

@ -1004,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();
@ -1011,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!");
@ -1116,24 +1134,8 @@ int CmdLFfind(const char *Cmd) {
PrintAndLog("\nValid Presco ID Found!");
return 1;
}
// ICEMAN; always call save_restorGB for COTAG. Will break graphbuffer
save_restoreGB(1);
ans=CmdCOTAGRead("");
if (ans>0){
PrintAndLog("\nValid COTAG ID Found!");
return 1;
}
save_restoreGB(0);
// 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)

View file

@ -268,3 +268,16 @@ uint8_t fskClocks(uint8_t *fc1, uint8_t *fc2, uint8_t *rf1, bool verbose)
}
return 1;
}
// test samples are not just noise
bool graphJustNoise(int *BitStream, int size)
{
//might not be high enough for noisy environments
#define THRESHOLD 15;
bool isNoise = TRUE;
for(int i=0; i < size && isNoise; i++){
isNoise = BitStream[i] < THRESHOLD;
}
return isNoise;
}

View file

@ -22,6 +22,7 @@ uint8_t GetPskCarrier(const char str[], bool printAns, bool verbose);
uint8_t GetNrzClock(const char str[], bool printAns, bool verbose);
uint8_t GetFskClock(const char str[], bool printAns, bool verbose);
uint8_t fskClocks(uint8_t *fc1, uint8_t *fc2, uint8_t *rf1, bool verbose);
bool graphJustNoise(int *BitStream, int size);
void setGraphBuf(uint8_t *buff, size_t size);
void save_restoreGB(uint8_t saveOpt);