}
}
-#define LONG_WAIT 100
+ #define LONG_WAIT 100
int start;
for (start = 0; start < GraphTraceLen - LONG_WAIT; start++) {
int first = GraphBuffer[start];
uint8_t rawbits[4096];
int rawbit = 0;
int worst = 0, worstPos = 0;
- PrintAndLog("Expecting a bit less than %d raw bits", GraphTraceLen / 32);
+ // PrintAndLog("Expecting a bit less than %d raw bits", GraphTraceLen / 32);
for (i = 0; i < GraphTraceLen-1; i += 2) {
count += 1;
if ((GraphBuffer[i] > GraphBuffer[i + 1]) && (state != 1)) {
count = 0;
}
}
- PrintAndLog("Recovered %d raw bits", rawbit);
- PrintAndLog("worst metric (0=best..7=worst): %d at pos %d", worst, worstPos);
-
+ 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) {
PrintAndLog("UID=%s (%x%08x%08x%08x%08x%08x%08x)", showbits, uid1, uid2, uid3, uid4, uid5, uid6, uid7);
}
- // Checking UID against next occurences
+ // Checking UID against next occurrences
for (; i + uidlen <= rawbit;) {
int failed = 0;
for (bit = 0; bit < uidlen; bit++) {
}
times += 1;
}
- PrintAndLog("Occurences: %d (expected %d)", times, (rawbit - start) / uidlen);
+ PrintAndLog("Occurrences: %d (expected %d)", times, (rawbit - start) / uidlen);
// Remodulating for tag cloning
GraphTraceLen = 32*uidlen;
}
RepaintGraphWindow();
- return 0;
+ return 1;
}
int CmdIndalaClone(const char *Cmd)
return 0;
}
+//by marshmellow
+int CmdLFfind(const char *Cmd)
+{
+ int ans=0;
+ if (!offline){
+ ans=CmdLFRead("");
+ ans=CmdSamples("20000");
+ }
+ 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("");
+ if (ans>0) {
+ PrintAndLog("Valid EM410x ID Found!");
+ return 1;
+ }
+ ans=CmdFSKdemodHID("");
+ if (ans>0) {
+ PrintAndLog("Valid HID Prox ID Found!");
+ return 1;
+ }
+ ans=CmdFSKdemodIO("");
+ if (ans>0) {
+ PrintAndLog("Valid IO Prox ID Found!");
+ return 1;
+ }
+ //add psk and indala
+ ans=CmdIndalaDecode("");
+ if (ans>0) {
+ PrintAndLog("Valid Indala ID Found!");
+ return 1;
+ }
+ // ans=CmdIndalaDemod("224");
+ // if (ans>0) return 1;
+ PrintAndLog("No Known Tags Found!\n");
+ return 0;
+}
+
static command_t CommandTable[] =
{
{"help", CmdHelp, 1, "This help"},
{"em4x", CmdLFEM4X, 1, "{ EM4X RFIDs... }"},
{"flexdemod", CmdFlexdemod, 1, "Demodulate samples for FlexPass"},
{"hid", CmdLFHID, 1, "{ HID RFIDs... }"},
- {"io", CmdLFIO, 1, "{ ioProx tags... }"},
+ {"io", CmdLFIO, 1, "{ ioProx tags... }"},
{"indalademod", CmdIndalaDemod, 1, "['224'] -- Demodulate samples for Indala 64 bit UID (option '224' for 224 bit)"},
- {"indalaclone", CmdIndalaClone, 1, "<UID> ['l']-- Clone Indala to T55x7 (tag must be in antenna)(UID in HEX)(option 'l' for 224 UID"},
+ {"indalaclone", CmdIndalaClone, 0, "<UID> ['l']-- Clone Indala to T55x7 (tag must be in antenna)(UID in HEX)(option 'l' for 224 UID"},
{"read", CmdLFRead, 0, "['h' or <divisor>] -- 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, "<Clock> <Bitstream> [GAP] Simulate arbitrary Manchester LF tag"},