]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlfem4x.c
fix HitagS simulation erors (issue #605) (#606)
[proxmark3-svn] / client / cmdlfem4x.c
index 35df80ab79e3784c7291b264b915e3fb6397e594..ff2ae5b0f527d3532167f3bf15e9106859bfded7 100644 (file)
@@ -15,7 +15,6 @@
 #include "proxmark3.h"
 #include "ui.h"
 #include "util.h"
-#include "data.h"
 #include "graph.h"
 #include "cmdparser.h"
 #include "cmddata.h"
@@ -289,19 +288,19 @@ int CmdEM410xSim(const char *Cmd)
 }
 
 int usage_lf_em410x_brute(void) {
-               PrintAndLog("Bruteforcing by emulating EM410x tag");
-               PrintAndLog("");
-               PrintAndLog("Usage:  lf em 410xbrute [h] ids.txt [d 2000] [clock]");
-               PrintAndLog("Options:");
-               PrintAndLog("       h             - this help");
-               PrintAndLog("       ids.txt       - file with UIDs in HEX format, one per line");
-               PrintAndLog("       d (2000)      - pause delay in milliseconds between UIDs simulation, default 1000 ms (optional)");
-               PrintAndLog("       c (32)        - clock (32|64), default 64 (optional)");
-               PrintAndLog("samples:");
-               PrintAndLog("      lf em 410xbrute ids.txt");
-               PrintAndLog("      lf em 410xbrute ids.txt c 32");
-               PrintAndLog("      lf em 410xbrute ids.txt d 3000");
-               PrintAndLog("      lf em 410xbrute ids.txt d 3000 32");
+       PrintAndLog("Bruteforcing by emulating EM410x tag");
+       PrintAndLog("");
+       PrintAndLog("Usage:  lf em 410xbrute [h] ids.txt [d 2000] [c clock]");
+       PrintAndLog("Options:");
+       PrintAndLog("       h             - this help");
+       PrintAndLog("       ids.txt       - file with UIDs in HEX format, one per line");
+       PrintAndLog("       d (2000)      - pause delay in milliseconds between UIDs simulation, default 1000 ms (optional)");
+       PrintAndLog("       c (32)        - clock (32|64), default 64 (optional)");
+       PrintAndLog("samples:");
+       PrintAndLog("      lf em 410xbrute ids.txt");
+       PrintAndLog("      lf em 410xbrute ids.txt c 32");
+       PrintAndLog("      lf em 410xbrute ids.txt d 3000");
+       PrintAndLog("      lf em 410xbrute ids.txt d 3000 c 32");
        return 0;
 }
 
@@ -335,7 +334,7 @@ int CmdEM410xBrute(const char *Cmd)
                delay = param_get32ex(Cmd, 4, 1000, 10);
        }
 
-       param_getstr(Cmd, 0, filename);
+       param_getstr(Cmd, 0, filename, sizeof(filename));
        
        uidBlock = calloc(stUidBlock, 5);
        if (uidBlock == NULL) return 1;
@@ -405,7 +404,7 @@ int CmdEM410xBrute(const char *Cmd)
                        return 0;
                }
                                
-               sprintf(testuid, "%010lX", bytes_to_num(uidBlock + 5*c, 5));
+               sprintf(testuid, "%010" PRIX64, bytes_to_num(uidBlock + 5*c, 5));
                PrintAndLog("Bruteforce %d / %d: simulating UID  %s, clock %d", c + 1, uidcnt, testuid, clock);
                
                ConstructEM410xEmulGraph(testuid, clock);
@@ -606,7 +605,7 @@ int EM4x50Read(const char *Cmd, bool verbose)
        char tmp2[20];
        int phaseoff;
        high = low = 0;
-       memset(tmpbuff, 0, MAX_GRAPH_TRACE_LEN / 64);
+       memset(tmpbuff, 0, sizeof(tmpbuff));
 
        // get user entry if any
        sscanf(Cmd, "%i %i", &clk, &invert);
@@ -804,8 +803,7 @@ int usage_lf_em_read(void) {
 bool downloadSamplesEM() {
        // 8 bit preamble + 32 bit word response (max clock (128) * 40bits = 5120 samples)
        uint8_t got[6000];
-       GetFromBigBuf(got, sizeof(got), 0);
-       if ( !WaitForResponseTimeout(CMD_ACK, NULL, 4000) ) {
+       if (!GetFromBigBuf(got, sizeof(got), 0, NULL, 4000, true)) {
                PrintAndLog("command execution time out");
                return false;
        }
@@ -950,7 +948,6 @@ int EM4x05ReadWord_ext(uint8_t addr, uint32_t pwd, bool usePwd, uint32_t *wordDa
        }
        int testLen = (GraphTraceLen < 1000) ? GraphTraceLen : 1000;
        if (graphJustNoise(GraphBuffer, testLen)) {
-               PrintAndLog("no tag not found");
                return -1;
        }
        //attempt demod:
@@ -1339,7 +1336,7 @@ static command_t CommandTable[] =
        {"410xread",  CmdEMdemodASK, 0, "[findone] -- Extract ID from EM410x tag (option 0 for continuous loop, 1 for only 1 tag)"},
        {"410xdemod", CmdAskEM410xDemod,  1, "[clock] [invert<0|1>] [maxErr] -- Demodulate an EM410x tag from GraphBuffer (args optional)"},
        {"410xsim",   CmdEM410xSim, 0, "<UID> [clock rate] -- Simulate EM410x tag"},
-       {"410xbrute",   CmdEM410xBrute, 0, "ids.txt [d (delay in ms)] [c (clock rate)] -- Bruteforcing by simulating EM410x tags (1 UID/s)"},
+       {"410xbrute",   CmdEM410xBrute, 0, "ids.txt [d (delay in ms)] [c (clock rate)] -- Reader bruteforce attack by simulating EM410x tags"},
        {"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, 0, "<UID> <'0' T5555> <'1' T55x7> [clock rate] -- Write EM410x UID to T5555(Q5) or T55x7 tag, optionally setting clock rate"},
Impressum, Datenschutz