mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-19 21:03:23 -07:00
fix nested loop with cards that do not NACK
This commit is contained in:
parent
e73c9f1bd4
commit
9b6d1f74da
3 changed files with 13 additions and 2 deletions
|
@ -895,6 +895,13 @@ void MifareNested(uint32_t arg0, uint32_t arg1, uint32_t calibrate, uint8_t *dat
|
||||||
target_nt[i] = 0;
|
target_nt[i] = 0;
|
||||||
while(target_nt[i] == 0) { // continue until we have an unambiguous nonce
|
while(target_nt[i] == 0) { // continue until we have an unambiguous nonce
|
||||||
|
|
||||||
|
// break out of the loop on button press or new usb data as
|
||||||
|
// cards that do not NACK bad keys will get stuck here
|
||||||
|
if(BUTTON_PRESS() || usb_poll_validate_length()) {
|
||||||
|
isOK = -2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// prepare next select. No need to power down the card.
|
// prepare next select. No need to power down the card.
|
||||||
if(mifare_classic_halt(pcs, cuid)) {
|
if(mifare_classic_halt(pcs, cuid)) {
|
||||||
if (MF_DBGLEVEL >= 1) Dbprintf("Nested: Halt error");
|
if (MF_DBGLEVEL >= 1) Dbprintf("Nested: Halt error");
|
||||||
|
|
|
@ -679,7 +679,7 @@ int CmdSriWrite(const char *Cmd) {
|
||||||
uint8_t blockno = -1;
|
uint8_t blockno = -1;
|
||||||
uint8_t data[4] = {0x00};
|
uint8_t data[4] = {0x00};
|
||||||
bool isSrix4k = true;
|
bool isSrix4k = true;
|
||||||
char str[20];
|
char str[22];
|
||||||
|
|
||||||
if (strlen(Cmd) < 1 || cmdp == 'h' || cmdp == 'H') {
|
if (strlen(Cmd) < 1 || cmdp == 'h' || cmdp == 'H') {
|
||||||
PrintAndLog("Usage: hf 14b write <1|2> <BLOCK> <DATA>");
|
PrintAndLog("Usage: hf 14b write <1|2> <BLOCK> <DATA>");
|
||||||
|
|
|
@ -335,7 +335,11 @@ int mfnested(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBlockNo,
|
||||||
memcpy(c.d.asBytes, key, 6);
|
memcpy(c.d.asBytes, key, 6);
|
||||||
SendCommand(&c);
|
SendCommand(&c);
|
||||||
|
|
||||||
if (!WaitForResponseTimeout(CMD_ACK, &resp, 1500)) {
|
if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) {
|
||||||
|
// cards that do not NACK bad keys cause it to get stuck in a loop, so break it out
|
||||||
|
UsbCommand c = {CMD_PING};
|
||||||
|
SendCommand(&c);
|
||||||
|
(void)WaitForResponseTimeout(CMD_ACK,NULL,500);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue