mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-22 14:23:50 -07:00
Check is sector is readable before attempting to read
This commit is contained in:
parent
8f2362e7b0
commit
e1c8c977c2
1 changed files with 5 additions and 5 deletions
|
@ -971,6 +971,11 @@ static int CmdHF14AMfDump(const char *Cmd) {
|
||||||
for (blockNo = 0; blockNo < mfNumBlocksPerSector(sectorNo); blockNo++) {
|
for (blockNo = 0; blockNo < mfNumBlocksPerSector(sectorNo); blockNo++) {
|
||||||
bool received = false;
|
bool received = false;
|
||||||
current_key = MF_KEY_A;
|
current_key = MF_KEY_A;
|
||||||
|
uint8_t data_area = (sectorNo < 32) ? blockNo : blockNo / 5;
|
||||||
|
if (rights[sectorNo][data_area] == 0x07) { // no key would work
|
||||||
|
PrintAndLogEx(WARNING, "access rights do not allow reading of sector %2d block %3d, skipping", sectorNo, blockNo);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
for (tries = 0; tries < MIFARE_SECTOR_RETRY; tries++) {
|
for (tries = 0; tries < MIFARE_SECTOR_RETRY; tries++) {
|
||||||
if (blockNo == mfNumBlocksPerSector(sectorNo) - 1) { // sector trailer. At least the Access Conditions can always be read with key A.
|
if (blockNo == mfNumBlocksPerSector(sectorNo) - 1) { // sector trailer. At least the Access Conditions can always be read with key A.
|
||||||
|
|
||||||
|
@ -982,7 +987,6 @@ static int CmdHF14AMfDump(const char *Cmd) {
|
||||||
SendCommandNG(CMD_HF_MIFARE_READBL, (uint8_t *)&payload, sizeof(mf_readblock_t));
|
SendCommandNG(CMD_HF_MIFARE_READBL, (uint8_t *)&payload, sizeof(mf_readblock_t));
|
||||||
received = WaitForResponseTimeout(CMD_HF_MIFARE_READBL, &resp, 1500);
|
received = WaitForResponseTimeout(CMD_HF_MIFARE_READBL, &resp, 1500);
|
||||||
} else { // data block. Check if it can be read with key A or key B
|
} else { // data block. Check if it can be read with key A or key B
|
||||||
uint8_t data_area = (sectorNo < 32) ? blockNo : blockNo / 5;
|
|
||||||
if ((rights[sectorNo][data_area] == 0x03) || (rights[sectorNo][data_area] == 0x05)) { // only key B would work
|
if ((rights[sectorNo][data_area] == 0x03) || (rights[sectorNo][data_area] == 0x05)) { // only key B would work
|
||||||
|
|
||||||
payload.blockno = mfFirstBlockOfSector(sectorNo) + blockNo;
|
payload.blockno = mfFirstBlockOfSector(sectorNo) + blockNo;
|
||||||
|
@ -992,10 +996,6 @@ static int CmdHF14AMfDump(const char *Cmd) {
|
||||||
clearCommandBuffer();
|
clearCommandBuffer();
|
||||||
SendCommandNG(CMD_HF_MIFARE_READBL, (uint8_t *)&payload, sizeof(mf_readblock_t));
|
SendCommandNG(CMD_HF_MIFARE_READBL, (uint8_t *)&payload, sizeof(mf_readblock_t));
|
||||||
received = WaitForResponseTimeout(CMD_HF_MIFARE_READBL, &resp, 1500);
|
received = WaitForResponseTimeout(CMD_HF_MIFARE_READBL, &resp, 1500);
|
||||||
} else if (rights[sectorNo][data_area] == 0x07) { // no key would work
|
|
||||||
PrintAndLogEx(WARNING, "access rights do not allow reading of sector %2d block %3d", sectorNo, blockNo);
|
|
||||||
// where do you want to go?? Next sector or block?
|
|
||||||
break;
|
|
||||||
} else { // key A would work
|
} else { // key A would work
|
||||||
|
|
||||||
payload.blockno = mfFirstBlockOfSector(sectorNo) + blockNo;
|
payload.blockno = mfFirstBlockOfSector(sectorNo) + blockNo;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue