fix: hf 14a raw was broken

(see http://www.proxmark.org/forum/viewtopic.php?id=2351)
This commit is contained in:
pwpiwi 2015-03-11 20:17:24 +01:00
parent 58e93ff593
commit 04bc1c660b
2 changed files with 7 additions and 5 deletions

View 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) {

View 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;