]> cvs.zerfleddert.de Git - proxmark3-svn/commitdiff
fix: hf 14a raw was broken
authorpwpiwi <pwpiwi@users.noreply.github.com>
Wed, 11 Mar 2015 19:17:24 +0000 (20:17 +0100)
committerpwpiwi <pwpiwi@users.noreply.github.com>
Wed, 11 Mar 2015 19:19:30 +0000 (20:19 +0100)
(see http://www.proxmark.org/forum/viewtopic.php?id=2351)

armsrc/iso14443a.c
client/cmdhf14a.c

index f2fa1ff29e3e766ad1581dfaca5304cecb088689..ac839cfdc081049ac8ceccaa784c41306158c04e 100644 (file)
@@ -1890,8 +1890,9 @@ void ReaderIso14443a(UsbCommand *c)
 {
        iso14a_command_t param = c->arg[0];
        uint8_t *cmd = c->d.asBytes;
-       size_t len = c->arg[1];
-       size_t lenbits = c->arg[2];
+       size_t len = c->arg[1] & 0xffff;
+       size_t lenbits = c->arg[1] >> 16;
+       uint32_t timeout = c->arg[2];
        uint32_t arg0 = 0;
        byte_t buf[USB_CMD_DATA_SIZE];
        uint8_t par[MAX_PARITY_SIZE];
@@ -1916,7 +1917,7 @@ void ReaderIso14443a(UsbCommand *c)
        }
 
        if(param & ISO14A_SET_TIMEOUT) {
-               iso14a_set_timeout(c->arg[2]);
+               iso14a_set_timeout(timeout);
        }
 
        if(param & ISO14A_APDU) {
index 744b38758588d27342b229d33b3b5223accc4753..d36ebb8bee959220547577c0d31495b764630e3b 100644 (file)
@@ -560,7 +560,7 @@ int CmdHF14ACmdRaw(const char *cmd) {
                                        timeout = temp;
                                        i+=3;
                                        while(cmd[i]!=' ' && cmd[i]!='\0') { i++; }
-                                       i+=2;
+                                       i-=2;
                                        break;
                 default:
                     PrintAndLog("Invalid option");
@@ -605,6 +605,7 @@ int CmdHF14ACmdRaw(const char *cmd) {
         if(active)
             c.arg[0] |= ISO14A_NO_SELECT;
     }
+
        if(bTimeout){
            #define MAX_TIMEOUT 40542464        // (2^32-1) * (8*16) / 13560000Hz * 1000ms/s = 
         c.arg[0] |= ISO14A_SET_TIMEOUT;
@@ -612,7 +613,7 @@ int CmdHF14ACmdRaw(const char *cmd) {
             timeout = MAX_TIMEOUT;
             PrintAndLog("Set timeout to 40542 seconds (11.26 hours). The max we can wait for response");
         }
-        c.arg[2] = 13560000 / 1000 / (8*16) * timeout; // timeout in ETUs (time to transfer 1 bit, approx. 9.4 us)
+               c.arg[2] = 13560000 / 1000 / (8*16) * timeout; // timeout in ETUs (time to transfer 1 bit, approx. 9.4 us)
        }
     if(power)
         c.arg[0] |= ISO14A_NO_DISCONNECT;
Impressum, Datenschutz