]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlfem4x.c
FIX: crash on Bionic libc if CloseProxmark is called twice. (#672)
[proxmark3-svn] / client / cmdlfem4x.c
index b00f66a988bf5f2a4b26e0073d6c21470dd9a93c..cdaeb5ed282f30d5b10bc045d2d5beaf63a3cf51 100644 (file)
@@ -8,14 +8,14 @@
 // Low frequency EM4x commands
 //-----------------------------------------------------------------------------
 
 // Low frequency EM4x commands
 //-----------------------------------------------------------------------------
 
+#include "cmdlfem4x.h"
+
 #include <stdio.h>
 #include <string.h>
 #include <inttypes.h>
 #include <stdio.h>
 #include <string.h>
 #include <inttypes.h>
-#include "cmdlfem4x.h"
-#include "proxmark3.h"
+#include "comms.h"
 #include "ui.h"
 #include "util.h"
 #include "ui.h"
 #include "util.h"
-#include "data.h"
 #include "graph.h"
 #include "cmdparser.h"
 #include "cmddata.h"
 #include "graph.h"
 #include "cmdparser.h"
 #include "cmddata.h"
@@ -291,7 +291,7 @@ int CmdEM410xSim(const char *Cmd)
 int usage_lf_em410x_brute(void) {
        PrintAndLog("Bruteforcing by emulating EM410x tag");
        PrintAndLog("");
 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("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("Options:");
        PrintAndLog("       h             - this help");
        PrintAndLog("       ids.txt       - file with UIDs in HEX format, one per line");
@@ -335,7 +335,7 @@ int CmdEM410xBrute(const char *Cmd)
                delay = param_get32ex(Cmd, 4, 1000, 10);
        }
 
                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;
        
        uidBlock = calloc(stUidBlock, 5);
        if (uidBlock == NULL) return 1;
@@ -405,7 +405,7 @@ int CmdEM410xBrute(const char *Cmd)
                        return 0;
                }
                                
                        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);
                PrintAndLog("Bruteforce %d / %d: simulating UID  %s, clock %d", c + 1, uidcnt, testuid, clock);
                
                ConstructEM410xEmulGraph(testuid, clock);
@@ -606,7 +606,7 @@ int EM4x50Read(const char *Cmd, bool verbose)
        char tmp2[20];
        int phaseoff;
        high = low = 0;
        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);
 
        // get user entry if any
        sscanf(Cmd, "%i %i", &clk, &invert);
@@ -804,8 +804,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];
 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;
        }
                PrintAndLog("command execution time out");
                return false;
        }
@@ -950,7 +949,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)) {
        }
        int testLen = (GraphTraceLen < 1000) ? GraphTraceLen : 1000;
        if (graphJustNoise(GraphBuffer, testLen)) {
-               PrintAndLog("no tag not found");
                return -1;
        }
        //attempt demod:
                return -1;
        }
        //attempt demod:
@@ -1339,7 +1337,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"},
        {"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"},
        {"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