]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlfhitag.c
Added loading EMV transaction parameters from json file (#659)
[proxmark3-svn] / client / cmdlfhitag.c
index 718cb703dc34df92563294104f06f3ad797a5342..8eef23595bd383159291a4a76d32b12b77f98939 100644 (file)
@@ -8,11 +8,12 @@
 // Low frequency Hitag support
 //-----------------------------------------------------------------------------
 
+#include "cmdlfhitag.h"
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include "data.h"
-#include "proxmark3.h"
+#include "comms.h"
 #include "ui.h"
 #include "cmdparser.h"
 #include "common.h"
@@ -34,8 +35,7 @@ int CmdLFHitagList(const char *Cmd)
 
        // Query for the actual size of the trace
        UsbCommand response;
-       GetFromBigBuf(got, USB_CMD_DATA_SIZE, 0);
-       WaitForResponse(CMD_ACK, &response);
+       GetFromBigBuf(got, USB_CMD_DATA_SIZE, 0, &response, -1, false);
        uint16_t traceLen = response.arg[2];
        if (traceLen > USB_CMD_DATA_SIZE) {
                uint8_t *p = realloc(got, traceLen);
@@ -45,8 +45,7 @@ int CmdLFHitagList(const char *Cmd)
                        return 2;
                }
                got = p;
-               GetFromBigBuf(got, traceLen, 0);
-               WaitForResponse(CMD_ACK,NULL);
+               GetFromBigBuf(got, traceLen, 0, NULL, -1, false);
        }
        
        PrintAndLog("recorded activity (TraceLen = %d bytes):");
@@ -67,6 +66,7 @@ int CmdLFHitagList(const char *Cmd)
        if (strlen(filename) > 0) {
                if ((pf = fopen(filename,"wb")) == NULL) {
                        PrintAndLog("Error: Could not open file [%s]",filename);
+                       free(got);
                        return 1;
                }
        }
@@ -167,11 +167,11 @@ int CmdLFHitagSim(const char *Cmd) {
                        return 1;
                }
                tag_mem_supplied = true;
-               if (fread(c.d.asBytes,48,1,pf) == 0) {
-      PrintAndLog("Error: File reading error");
-      fclose(pf);
+               if (fread(c.d.asBytes,1,48,pf) != 48) {
+                       PrintAndLog("Error: File reading error");
+                       fclose(pf);
                        return 1;
-    }
+               }
                fclose(pf);
        } else {
                tag_mem_supplied = false;
@@ -239,6 +239,7 @@ int CmdLFHitagReader(const char *Cmd) {
        c.arg[0] = htf;
 
        // Send the command to the proxmark
+       clearCommandBuffer();
        SendCommand(&c);
 
        UsbCommand resp;
@@ -289,7 +290,7 @@ int CmdLFHitagSimS(const char *Cmd) {
                        return 1;
                }
                tag_mem_supplied = true;
-               if (fread(c.d.asBytes, 4*64, 1, pf) == 0) {
+               if (fread(c.d.asBytes, 1, 4*64, pf) != 4*64) {
                        PrintAndLog("Error: File reading error");
                        fclose(pf);
                        return 1;
@@ -321,9 +322,9 @@ int CmdLFHitagCheckChallenges(const char *Cmd) {
                        return 1;
                }
                file_given = true;
-               if (fread(c.d.asBytes,8*60,1,pf) == 0) {
-      PrintAndLog("Error: File reading error");
-      fclose(pf);
+               if (fread(c.d.asBytes,1,8*60,pf) != 8*60) {
+                       PrintAndLog("Error: File reading error");
+                       fclose(pf);
                        return 1;
         }
                fclose(pf);
@@ -349,7 +350,9 @@ int CmdLFHitagWP(const char *Cmd) {
                        c.arg[2]= param_get32ex(Cmd, 2, 0, 10);
                        num_to_bytes(param_get32ex(Cmd,3,0,16),4,htd->auth.data);
                } break;
-               case 04: { //WHTSF_KEY
+               case 04:
+               case 24:
+               { //WHTSF_KEY
                        num_to_bytes(param_get64ex(Cmd,1,0,16),6,htd->crypto.key);
                        c.arg[2]= param_get32ex(Cmd, 2, 0, 10);
                        num_to_bytes(param_get32ex(Cmd,3,0,16),4,htd->crypto.data);
@@ -363,6 +366,7 @@ int CmdLFHitagWP(const char *Cmd) {
                        PrintAndLog("  04 <key> (set to 0 if no authentication is needed) <page> <byte0...byte3> write page on a Hitag S tag");
                        PrintAndLog(" Hitag1 (1*)");
                        PrintAndLog(" Hitag2 (2*)");
+                       PrintAndLog("  24 <key> (set to 0 if no authentication is needed) <page> <byte0...byte3> write page on a Hitag S tag");
                        return 1;
                } break;
        }
Impressum, Datenschutz