X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/7bb9d33e2c2dccd700db53468d58e7b6f5b796c6..3400a4358db11337382065c26e58539d28ade5ef:/client/cmdlfem4x.c diff --git a/client/cmdlfem4x.c b/client/cmdlfem4x.c index bd6137ac..83f49db7 100644 --- a/client/cmdlfem4x.c +++ b/client/cmdlfem4x.c @@ -22,6 +22,20 @@ static int CmdHelp(const char *Cmd); + + +int CmdEMdemodASK(const char *Cmd) +{ + int findone=0; + UsbCommand c={CMD_EM410X_DEMOD}; + if(Cmd[0]=='1') findone=1; + c.arg[0]=findone; + SendCommand(&c); + return 0; +} + + + /* Read the ID of an EM410x tag. * Format: * 1111 1111 1 <-- standard non-repeatable header @@ -35,6 +49,7 @@ int CmdEM410xRead(const char *Cmd) int i, j, clock, header, rows, bit, hithigh, hitlow, first, bit2idx, high, low; int parity[4]; char id[11]; + char id2[11]; int retested = 0; uint8_t BitStream[MAX_GRAPH_TRACE_LEN]; high = low = 0; @@ -101,6 +116,7 @@ retest: { /* Read another byte! */ sprintf(id+rows, "%x", (8 * BitStream[i]) + (4 * BitStream[i+1]) + (2 * BitStream[i+2]) + (1 * BitStream[i+3])); + sprintf(id2+rows, "%x", (8 * BitStream[i+3]) + (4 * BitStream[i+2]) + (2 * BitStream[i+1]) + (1 * BitStream[i])); rows++; /* Keep parity info */ @@ -135,6 +151,7 @@ retest: { /* Sweet! */ PrintAndLog("EM410x Tag ID: %s", id); + PrintAndLog("Unique Tag ID: %s", id2); /* Stop any loops */ return 1; @@ -316,7 +333,7 @@ int CmdEM4x50Read(const char *Cmd) ++i; while ((GraphBuffer[i] > low) && (i(MAX_GRAPH_TRACE_LEN/64)) { + if (j>=(MAX_GRAPH_TRACE_LEN/64)) { break; } tmpbuff[j++]= i - start; @@ -578,6 +595,7 @@ int CmdWriteWordPWD(const char *Cmd) static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, + {"em410xdemod", CmdEMdemodASK, 0, "[clock rate] -- Extract ID from EM410x tag"}, {"em410xread", CmdEM410xRead, 1, "[clock rate] -- Extract ID from EM410x tag"}, {"em410xsim", CmdEM410xSim, 0, " -- Simulate EM410x tag"}, {"em410xwatch", CmdEM410xWatch, 0, "['h'] -- Watches for EM410x 125/134 kHz tags (option 'h' for 134)"},