fix: hf mf fchk - exit on button press

This commit is contained in:
iceman1001 2020-03-26 09:30:59 +01:00
commit 15726268bf

View file

@ -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;
} }