]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdhf14a.c
FIX: the lua script hf_reader.lua now works with 14B tags.
[proxmark3-svn] / client / cmdhf14a.c
index 6d94d33b4fc714b4e7a540b4fcab2dbdd0941d6b..577ee574ec71e8151c63dcf78761373b03587932 100644 (file)
@@ -27,8 +27,6 @@
 #include "nonce2key/nonce2key.h"
 #include "cmdhf.h"
 
-#define llx PRIx64
-
 static int CmdHelp(const char *Cmd);
 static void waitCmd(uint8_t iLen);
 
@@ -576,7 +574,7 @@ int CmdHF14ASim(const char *Cmd)
                                int len = (resp.arg[1] > sizeof(data)) ? sizeof(data) : resp.arg[1];
                                memcpy(data, resp.d.asBytes, len);
                                tryMfk32(uid, data, key);
-                               tryMfk32_moebius(uid, data, key);
+                               //tryMfk32_moebius(uid, data, key);
                                //tryMfk64(uid, data, key);
                                PrintAndLog("--");
                        }
@@ -735,8 +733,8 @@ int CmdHF14ACmdRaw(const char *cmd) {
        // Max buffer is USB_CMD_DATA_SIZE
        datalen = (datalen > USB_CMD_DATA_SIZE) ? USB_CMD_DATA_SIZE : datalen;
                
-    c.arg[1] = (datalen & 0xFFFF) | (numbits << 16);
-    memcpy(c.d.asBytes,data,datalen);
+    c.arg[1] = (datalen & 0xFFFF) | (uint32_t)(numbits << 16);
+    memcpy(c.d.asBytes, data, datalen);
 
        clearCommandBuffer();
     SendCommand(&c);
@@ -751,26 +749,15 @@ int CmdHF14ACmdRaw(const char *cmd) {
 }
 
 static void waitCmd(uint8_t iSelect) {
-    uint8_t *recv;
     UsbCommand resp;
-    char *hexout;
+    uint16_t len = 0;
 
-    if (WaitForResponseTimeout(CMD_ACK,&resp,1500)) {
-        recv = resp.d.asBytes;
-        uint8_t iLen = iSelect ? resp.arg[1] : resp.arg[0];
-        PrintAndLog("received %i octets",iLen);
-        if(!iLen)
+    if (WaitForResponseTimeout(CMD_ACK,&resp,1500)) {        
+        len = iSelect ? (resp.arg[1] & 0xffff) : (resp.arg[0]  & 0xffff);
+        PrintAndLog("received %i octets", len);
+        if(!len)
             return;
-        hexout = (char *)malloc(iLen * 3 + 1);
-        if (hexout != NULL) {
-            for (int i = 0; i < iLen; i++) { // data in hex
-                sprintf(&hexout[i * 3], "%02X ", recv[i]);
-            }
-            PrintAndLog("%s", hexout);
-            free(hexout);
-        } else {
-            PrintAndLog("malloc failed your client has low memory?");
-        }
+               PrintAndLog("%s", sprint_hex(resp.d.asBytes, len) );
     } else {
         PrintAndLog("timeout while waiting for reply.");
     }
Impressum, Datenschutz