X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/b44e523300b3fbe0a5d9b3081aaa588be3095b14..149aeadaa609b01db86ba3b4ee23b317f16bede5:/client/cmdlfem4x.c?ds=sidebyside diff --git a/client/cmdlfem4x.c b/client/cmdlfem4x.c index 3c46d3b1..0449e34a 100644 --- a/client/cmdlfem4x.c +++ b/client/cmdlfem4x.c @@ -21,7 +21,7 @@ #include "cmdlfem4x.h" #include "util.h" #include "data.h" -#define LF_TRACE_BUFF_SIZE 16000 +#define LF_TRACE_BUFF_SIZE 12000 char *global_em410xId; @@ -255,38 +255,32 @@ int CmdEM410xSim(const char *Cmd) return 0; } -/* Function is equivalent of loread + losamples + em410xread - * looped until an EM410x tag is detected */ +/* Function is equivalent of lf read + data samples + em410xread + * looped until an EM410x tag is detected + * + * Why is CmdSamples("16000")? + * TBD: Auto-grow sample size based on detected sample rate. IE: If the + * rate gets lower, then grow the number of samples + * Changed by martin, 4000 x 4 = 16000, + * see http://www.proxmark.org/forum/viewtopic.php?pid=7235#p7235 + +*/ int CmdEM410xWatch(const char *Cmd) { - int read_h = (*Cmd == 'h'); - //char k; - do - { - CmdLFRead(read_h ? "h" : ""); - // 2000 samples is OK for clock=64, but not clock=32. Probably want - // 8000 for clock=16. Don't want to go too high since old HID driver - // is very slow - // TBD: Auto-grow sample size based on detected sample rate. IE: If the - // rate gets lower, then grow the number of samples - - // Changed by martin, 4000 x 4 = 16000, - // see http://www.proxmark.org/forum/viewtopic.php?pid=7235#p7235 - CmdSamples("16000"); - } while ( + int read_h = (*Cmd == 'h'); + do + { + CmdLFRead(read_h ? "h" : ""); + CmdSamples("16000"); + } while ( !CmdEM410xRead("") ); - return 0; + return 0; } int CmdEM410xWatchnSpoof(const char *Cmd) { - int read_h = (*Cmd == 'h'); - do - { - CmdLFRead(read_h ? "h" : ""); - CmdSamples("16000"); - } while ( ! CmdEM410xRead("")); + CmdEM410xWatch(Cmd); PrintAndLog("# Replaying : %s",global_em410xId); CmdEM410xSim(global_em410xId); return 0; @@ -526,29 +520,20 @@ int CmdReadWord(const char *Cmd) SendCommand(&c); WaitForResponse(CMD_ACK, NULL); - uint8_t data[LF_TRACE_BUFF_SIZE]; - memset(data, 0x00, LF_TRACE_BUFF_SIZE); + uint8_t data[LF_TRACE_BUFF_SIZE] = {0x00}; GetFromBigBuf(data,LF_TRACE_BUFF_SIZE,3560); //3560 -- should be offset.. WaitForResponseTimeout(CMD_ACK,NULL, 1500); for (int j = 0; j < LF_TRACE_BUFF_SIZE; j++) { - GraphBuffer[j] = ((int)data[j]) - 128; + GraphBuffer[j] = ((int)data[j]); } GraphTraceLen = LF_TRACE_BUFF_SIZE; - - // BiDirectional - //CmdDirectionalThreshold("70 -60"); - // Askdemod - //Cmdaskdemod("1"); - - uint8_t bits[1000]; + uint8_t bits[1000] = {0x00}; uint8_t * bitstream = bits; - memset(bitstream, 0x00, sizeof(bits)); - manchester_decode(GraphBuffer, LF_TRACE_BUFF_SIZE, bitstream); - + RepaintGraphWindow(); return 0; } @@ -575,28 +560,21 @@ int CmdReadWordPWD(const char *Cmd) SendCommand(&c); WaitForResponse(CMD_ACK, NULL); - uint8_t data[LF_TRACE_BUFF_SIZE]; - memset(data, 0x00, LF_TRACE_BUFF_SIZE); + uint8_t data[LF_TRACE_BUFF_SIZE] = {0x00}; GetFromBigBuf(data,LF_TRACE_BUFF_SIZE,3560); //3560 -- should be offset.. WaitForResponseTimeout(CMD_ACK,NULL, 1500); for (int j = 0; j < LF_TRACE_BUFF_SIZE; j++) { - GraphBuffer[j] = ((int)data[j]) - 128; + GraphBuffer[j] = ((int)data[j]); } GraphTraceLen = LF_TRACE_BUFF_SIZE; - - // BiDirectional - //CmdDirectionalThreshold("70 -60"); - // Askdemod - //Cmdaskdemod("1"); - - uint8_t bits[1000]; + uint8_t bits[1000] = {0x00}; uint8_t * bitstream = bits; - memset(bitstream, 0x00, sizeof(bits)); manchester_decode(GraphBuffer, LF_TRACE_BUFF_SIZE, bitstream); + RepaintGraphWindow(); return 0; } @@ -652,12 +630,12 @@ int CmdWriteWordPWD(const char *Cmd) static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, - {"410read", CmdEM410xRead, 1, "[clock rate] -- Extract ID from EM410x tag"}, - {"410sim", CmdEM410xSim, 0, " -- Simulate EM410x tag"}, - {"410watch", CmdEM410xWatch, 0, "['h'] -- Watches for EM410x 125/134 kHz tags (option 'h' for 134)"}, - {"410spoof", CmdEM410xWatchnSpoof, 0, "['h'] --- Watches for EM410x 125/134 kHz tags, and replays them. (option 'h' for 134)" }, - {"410write", CmdEM410xWrite, 1, " <'0' T5555> <'1' T55x7> [clock rate] -- Write EM410x UID to T5555(Q5) or T55x7 tag, optionally setting clock rate"}, - {"4xread", CmdEM4x50Read, 1, "Extract data from EM4x50 tag"}, + {"410xread", CmdEM410xRead, 1, "[clock rate] -- Extract ID from EM410x tag"}, + {"410xsim", CmdEM410xSim, 0, " -- Simulate EM410x tag"}, + {"410xwatch", CmdEM410xWatch, 0, "['h'] -- Watches for EM410x 125/134 kHz tags (option 'h' for 134)"}, + {"410xspoof", CmdEM410xWatchnSpoof, 0, "['h'] --- Watches for EM410x 125/134 kHz tags, and replays them. (option 'h' for 134)" }, + {"410xwrite", CmdEM410xWrite, 1, " <'0' T5555> <'1' T55x7> [clock rate] -- Write EM410x UID to T5555(Q5) or T55x7 tag, optionally setting clock rate"}, + {"4x50read", CmdEM4x50Read, 1, "Extract data from EM4x50 tag"}, {"rd", CmdReadWord, 1, " -- Read EM4xxx word data"}, {"rdpwd", CmdReadWordPWD, 1, " -- Read EM4xxx word data in password mode "}, {"wr", CmdWriteWord, 1, " -- Write EM4xxx word data"},