mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-21 05:43:48 -07:00
fix: hf mf fchk - exit on button press
This commit is contained in:
parent
5e21566201
commit
15726268bf
1 changed files with 35 additions and 35 deletions
|
@ -82,22 +82,22 @@ void MifareReadBlock(uint8_t blockNo, uint8_t keyType, uint8_t *datain) {
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) {
|
if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Can't select card");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Can't select card");
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (mifare_classic_auth(pcs, cuid, blockNo, keyType, ui64Key, AUTH_FIRST)) {
|
if (mifare_classic_auth(pcs, cuid, blockNo, keyType, ui64Key, AUTH_FIRST)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Auth error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Auth error");
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (mifare_classic_readblock(pcs, cuid, blockNo, dataoutbuf)) {
|
if (mifare_classic_readblock(pcs, cuid, blockNo, dataoutbuf)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Read block error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Read block error");
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (mifare_classic_halt(pcs, cuid)) {
|
if (mifare_classic_halt(pcs, cuid)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Halt error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Halt error");
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -243,25 +243,25 @@ void MifareReadSector(uint8_t arg0, uint8_t arg1, uint8_t *datain) {
|
||||||
isOK = 1;
|
isOK = 1;
|
||||||
if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) {
|
if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) {
|
||||||
isOK = 0;
|
isOK = 0;
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Can't select card");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Can't select card");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (isOK && mifare_classic_auth(pcs, cuid, FirstBlockOfSector(sectorNo), keyType, ui64Key, AUTH_FIRST)) {
|
if (isOK && mifare_classic_auth(pcs, cuid, FirstBlockOfSector(sectorNo), keyType, ui64Key, AUTH_FIRST)) {
|
||||||
isOK = 0;
|
isOK = 0;
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Auth error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Auth error");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint8_t blockNo = 0; isOK && blockNo < NumBlocksPerSector(sectorNo); blockNo++) {
|
for (uint8_t blockNo = 0; isOK && blockNo < NumBlocksPerSector(sectorNo); blockNo++) {
|
||||||
if (mifare_classic_readblock(pcs, cuid, FirstBlockOfSector(sectorNo) + blockNo, dataoutbuf + 16 * blockNo)) {
|
if (mifare_classic_readblock(pcs, cuid, FirstBlockOfSector(sectorNo) + blockNo, dataoutbuf + 16 * blockNo)) {
|
||||||
isOK = 0;
|
isOK = 0;
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Read sector %2d block %2d error", sectorNo, blockNo);
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Read sector %2d block %2d error", sectorNo, blockNo);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mifare_classic_halt(pcs, cuid)) {
|
if (mifare_classic_halt(pcs, cuid)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Halt error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Halt error");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DBGLEVEL >= 2) DbpString("READ SECTOR FINISHED");
|
if (DBGLEVEL >= 2) DbpString("READ SECTOR FINISHED");
|
||||||
|
@ -409,22 +409,22 @@ void MifareWriteBlock(uint8_t arg0, uint8_t arg1, uint8_t *datain) {
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) {
|
if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Can't select card");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Can't select card");
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (mifare_classic_auth(pcs, cuid, blockNo, keyType, ui64Key, AUTH_FIRST)) {
|
if (mifare_classic_auth(pcs, cuid, blockNo, keyType, ui64Key, AUTH_FIRST)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Auth error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Auth error");
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (mifare_classic_writeblock(pcs, cuid, blockNo, blockdata)) {
|
if (mifare_classic_writeblock(pcs, cuid, blockNo, blockdata)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Write block error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Write block error");
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (mifare_classic_halt(pcs, cuid)) {
|
if (mifare_classic_halt(pcs, cuid)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Halt error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Halt error");
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -460,18 +460,18 @@ void MifareUWriteBlockCompat(uint8_t arg0, uint8_t *datain)
|
||||||
iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN);
|
iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN);
|
||||||
|
|
||||||
if(!iso14443a_select_card(uid, NULL, NULL, true, 0, true)) {
|
if(!iso14443a_select_card(uid, NULL, NULL, true, 0, true)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Can't select card");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Can't select card");
|
||||||
OnError(0);
|
OnError(0);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
if(mifare_ultra_writeblock_compat(blockNo, blockdata)) {
|
if(mifare_ultra_writeblock_compat(blockNo, blockdata)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Write block error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Write block error");
|
||||||
OnError(0);
|
OnError(0);
|
||||||
return; };
|
return; };
|
||||||
|
|
||||||
if(mifare_ultra_halt()) {
|
if(mifare_ultra_halt()) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Halt error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Halt error");
|
||||||
OnError(0);
|
OnError(0);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
@ -506,7 +506,7 @@ void MifareUWriteBlock(uint8_t arg0, uint8_t arg1, uint8_t *datain) {
|
||||||
set_tracing(true);
|
set_tracing(true);
|
||||||
|
|
||||||
if (!iso14443a_select_card(NULL, NULL, NULL, true, 0, true)) {
|
if (!iso14443a_select_card(NULL, NULL, NULL, true, 0, true)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Can't select card");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Can't select card");
|
||||||
OnError(0);
|
OnError(0);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
@ -534,13 +534,13 @@ void MifareUWriteBlock(uint8_t arg0, uint8_t arg1, uint8_t *datain) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mifare_ultra_writeblock(blockNo, blockdata)) {
|
if (mifare_ultra_writeblock(blockNo, blockdata)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Write block error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Write block error");
|
||||||
OnError(0);
|
OnError(0);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (mifare_ultra_halt()) {
|
if (mifare_ultra_halt()) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Halt error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Halt error");
|
||||||
OnError(0);
|
OnError(0);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
@ -569,7 +569,7 @@ void MifareUSetPwd(uint8_t arg0, uint8_t *datain) {
|
||||||
set_tracing(true);
|
set_tracing(true);
|
||||||
|
|
||||||
if (!iso14443a_select_card(NULL, NULL, NULL, true, 0, true)) {
|
if (!iso14443a_select_card(NULL, NULL, NULL, true, 0, true)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Can't select card");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Can't select card");
|
||||||
OnError(0);
|
OnError(0);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
@ -579,7 +579,7 @@ void MifareUSetPwd(uint8_t arg0, uint8_t *datain) {
|
||||||
blockdata[2] = pwd[5];
|
blockdata[2] = pwd[5];
|
||||||
blockdata[3] = pwd[4];
|
blockdata[3] = pwd[4];
|
||||||
if (mifare_ultra_writeblock(44, blockdata)) {
|
if (mifare_ultra_writeblock(44, blockdata)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Write block error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Write block error");
|
||||||
OnError(44);
|
OnError(44);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
@ -589,7 +589,7 @@ void MifareUSetPwd(uint8_t arg0, uint8_t *datain) {
|
||||||
blockdata[2] = pwd[1];
|
blockdata[2] = pwd[1];
|
||||||
blockdata[3] = pwd[0];
|
blockdata[3] = pwd[0];
|
||||||
if (mifare_ultra_writeblock(45, blockdata)) {
|
if (mifare_ultra_writeblock(45, blockdata)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Write block error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Write block error");
|
||||||
OnError(45);
|
OnError(45);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
@ -599,7 +599,7 @@ void MifareUSetPwd(uint8_t arg0, uint8_t *datain) {
|
||||||
blockdata[2] = pwd[13];
|
blockdata[2] = pwd[13];
|
||||||
blockdata[3] = pwd[12];
|
blockdata[3] = pwd[12];
|
||||||
if (mifare_ultra_writeblock(46, blockdata)) {
|
if (mifare_ultra_writeblock(46, blockdata)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Write block error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Write block error");
|
||||||
OnError(46);
|
OnError(46);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
@ -609,13 +609,13 @@ void MifareUSetPwd(uint8_t arg0, uint8_t *datain) {
|
||||||
blockdata[2] = pwd[9];
|
blockdata[2] = pwd[9];
|
||||||
blockdata[3] = pwd[8];
|
blockdata[3] = pwd[8];
|
||||||
if (mifare_ultra_writeblock(47, blockdata)) {
|
if (mifare_ultra_writeblock(47, blockdata)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Write block error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Write block error");
|
||||||
OnError(47);
|
OnError(47);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (mifare_ultra_halt()) {
|
if (mifare_ultra_halt()) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("Halt error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("Halt error");
|
||||||
OnError(0);
|
OnError(0);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
@ -674,7 +674,7 @@ void MifareAcquireNonces(uint32_t arg0, uint32_t flags) {
|
||||||
if (!have_uid) { // need a full select cycle to get the uid first
|
if (!have_uid) { // need a full select cycle to get the uid first
|
||||||
iso14a_card_select_t card_info;
|
iso14a_card_select_t card_info;
|
||||||
if (!iso14443a_select_card(uid, &card_info, &cuid, true, 0, true)) {
|
if (!iso14443a_select_card(uid, &card_info, &cuid, true, 0, true)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("AcquireNonces: Can't select card (ALL)");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("AcquireNonces: Can't select card (ALL)");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
switch (card_info.uidlen) {
|
switch (card_info.uidlen) {
|
||||||
|
@ -693,7 +693,7 @@ void MifareAcquireNonces(uint32_t arg0, uint32_t flags) {
|
||||||
have_uid = true;
|
have_uid = true;
|
||||||
} else { // no need for anticollision. We can directly select the card
|
} else { // no need for anticollision. We can directly select the card
|
||||||
if (!iso14443a_fast_select_card(uid, cascade_levels)) {
|
if (!iso14443a_fast_select_card(uid, cascade_levels)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("AcquireNonces: Can't select card (UID)");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("AcquireNonces: Can't select card (UID)");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -792,7 +792,7 @@ void MifareAcquireEncryptedNonces(uint32_t arg0, uint32_t arg1, uint32_t flags,
|
||||||
if (!have_uid) { // need a full select cycle to get the uid first
|
if (!have_uid) { // need a full select cycle to get the uid first
|
||||||
iso14a_card_select_t card_info;
|
iso14a_card_select_t card_info;
|
||||||
if (!iso14443a_select_card(uid, &card_info, &cuid, true, 0, true)) {
|
if (!iso14443a_select_card(uid, &card_info, &cuid, true, 0, true)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("AcquireNonces: Can't select card (ALL)");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("AcquireNonces: Can't select card (ALL)");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
switch (card_info.uidlen) {
|
switch (card_info.uidlen) {
|
||||||
|
@ -811,7 +811,7 @@ void MifareAcquireEncryptedNonces(uint32_t arg0, uint32_t arg1, uint32_t flags,
|
||||||
have_uid = true;
|
have_uid = true;
|
||||||
} else { // no need for anticollision. We can directly select the card
|
} else { // no need for anticollision. We can directly select the card
|
||||||
if (!iso14443a_fast_select_card(uid, cascade_levels)) {
|
if (!iso14443a_fast_select_card(uid, cascade_levels)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("AcquireNonces: Can't select card (UID)");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("AcquireNonces: Can't select card (UID)");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -821,7 +821,7 @@ void MifareAcquireEncryptedNonces(uint32_t arg0, uint32_t arg1, uint32_t flags,
|
||||||
|
|
||||||
uint32_t nt1;
|
uint32_t nt1;
|
||||||
if (mifare_classic_authex(pcs, cuid, blockNo, keyType, ui64Key, AUTH_FIRST, &nt1, NULL)) {
|
if (mifare_classic_authex(pcs, cuid, blockNo, keyType, ui64Key, AUTH_FIRST, &nt1, NULL)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("AcquireNonces: Auth1 error");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("AcquireNonces: Auth1 error");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -832,7 +832,7 @@ void MifareAcquireEncryptedNonces(uint32_t arg0, uint32_t arg1, uint32_t flags,
|
||||||
CHK_TIMEOUT();
|
CHK_TIMEOUT();
|
||||||
|
|
||||||
if (len != 4) {
|
if (len != 4) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("AcquireNonces: Auth2 error len=%d", len);
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("AcquireNonces: Auth2 error len=%d", len);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1422,7 +1422,7 @@ void MifareChkKeys_fast(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *da
|
||||||
|
|
||||||
iso14a_card_select_t card_info;
|
iso14a_card_select_t card_info;
|
||||||
if (!iso14443a_select_card(uid, &card_info, &cuid, true, 0, true)) {
|
if (!iso14443a_select_card(uid, &card_info, &cuid, true, 0, true)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("ChkKeys_fast: Can't select card (ALL)");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("ChkKeys_fast: Can't select card (ALL)");
|
||||||
goto OUT;
|
goto OUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1470,7 +1470,7 @@ void MifareChkKeys_fast(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *da
|
||||||
for (uint16_t i = s_point; i < keyCount; ++i) {
|
for (uint16_t i = s_point; i < keyCount; ++i) {
|
||||||
|
|
||||||
// Allow button press / usb cmd to interrupt device
|
// Allow button press / usb cmd to interrupt device
|
||||||
if (BUTTON_PRESS() && data_available()) {
|
if (BUTTON_PRESS() || data_available()) {
|
||||||
goto OUT;
|
goto OUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1562,7 +1562,7 @@ void MifareChkKeys_fast(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *da
|
||||||
for (uint16_t i = 0; i < keyCount; i++) {
|
for (uint16_t i = 0; i < keyCount; i++) {
|
||||||
|
|
||||||
// Allow button press / usb cmd to interrupt device
|
// Allow button press / usb cmd to interrupt device
|
||||||
if (BUTTON_PRESS() && data_available()) break;
|
if (BUTTON_PRESS() || data_available()) break;
|
||||||
|
|
||||||
// found all keys?
|
// found all keys?
|
||||||
if (foundkeys == allkeys)
|
if (foundkeys == allkeys)
|
||||||
|
@ -1731,7 +1731,7 @@ void MifareChkKeys(uint8_t *datain) {
|
||||||
if (!have_uid) { // need a full select cycle to get the uid first
|
if (!have_uid) { // need a full select cycle to get the uid first
|
||||||
iso14a_card_select_t card_info;
|
iso14a_card_select_t card_info;
|
||||||
if (!iso14443a_select_card(uid, &card_info, &cuid, true, 0, true)) {
|
if (!iso14443a_select_card(uid, &card_info, &cuid, true, 0, true)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("ChkKeys: Can't select card (ALL)");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("ChkKeys: Can't select card (ALL)");
|
||||||
--i; // try same key once again
|
--i; // try same key once again
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1751,7 +1751,7 @@ void MifareChkKeys(uint8_t *datain) {
|
||||||
have_uid = true;
|
have_uid = true;
|
||||||
} else { // no need for anticollision. We can directly select the card
|
} else { // no need for anticollision. We can directly select the card
|
||||||
if (!iso14443a_select_card(uid, NULL, NULL, false, cascade_levels, true)) {
|
if (!iso14443a_select_card(uid, NULL, NULL, false, cascade_levels, true)) {
|
||||||
if (DBGLEVEL >= 1) Dbprintf("ChkKeys: Can't select card (UID)");
|
if (DBGLEVEL >= DBG_ERROR) Dbprintf("ChkKeys: Can't select card (UID)");
|
||||||
--i; // try same key once again
|
--i; // try same key once again
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue