mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-02-13 10:43:01 +08:00
Merge pull request #109 from sh7d/mad-ignore-shitty-checksum
Mifare mad - do not exit if checksum is shitty
This commit is contained in:
commit
3a4187555e
1 changed files with 5 additions and 11 deletions
|
@ -112,14 +112,14 @@ int madCRCCheck(uint8_t *sector, bool verbose, int MADver) {
|
||||||
uint8_t crc = CRC8Mad(§or[16 + 1], 15 + 16);
|
uint8_t crc = CRC8Mad(§or[16 + 1], 15 + 16);
|
||||||
if (crc != sector[16]) {
|
if (crc != sector[16]) {
|
||||||
if (verbose)
|
if (verbose)
|
||||||
PrintAndLogEx(ERR, "Wrong MAD%d CRC. Calculated: 0x%02x, from card: 0x%02x", MADver, crc, sector[16]);
|
PrintAndLogEx(WARNING, "Wrong MAD%d CRC. Calculated: 0x%02x, from card: 0x%02x", MADver, crc, sector[16]);
|
||||||
return 3;
|
return 3;
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
uint8_t crc = CRC8Mad(§or[1], 15 + 16 + 16);
|
uint8_t crc = CRC8Mad(§or[1], 15 + 16 + 16);
|
||||||
if (crc != sector[0]) {
|
if (crc != sector[0]) {
|
||||||
if (verbose)
|
if (verbose)
|
||||||
PrintAndLogEx(ERR, "Wrong MAD%d CRC. Calculated: 0x%02x, from card: 0x%02x", MADver, crc, sector[16]);
|
PrintAndLogEx(WARNING, "Wrong MAD%d CRC. Calculated: 0x%02x, from card: 0x%02x", MADver, crc, sector[16]);
|
||||||
return 3;
|
return 3;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -191,9 +191,7 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2)
|
||||||
int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen) {
|
int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen) {
|
||||||
*madlen = 0;
|
*madlen = 0;
|
||||||
bool haveMAD2 = false;
|
bool haveMAD2 = false;
|
||||||
int res = MADCheck(sector0, sector10, false, &haveMAD2);
|
MADCheck(sector0, sector10, false, &haveMAD2);
|
||||||
if (res)
|
|
||||||
return res;
|
|
||||||
|
|
||||||
for (int i = 1; i < 16; i++) {
|
for (int i = 1; i < 16; i++) {
|
||||||
mad[*madlen] = madGetAID(sector0, 1, i);
|
mad[*madlen] = madGetAID(sector0, 1, i);
|
||||||
|
@ -219,10 +217,8 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool verbose, bool *haveMAD2) {
|
||||||
|
|
||||||
// check MAD1 only
|
// check MAD1 only
|
||||||
int res = MADCheck(sector, NULL, verbose, haveMAD2);
|
int res = MADCheck(sector, NULL, verbose, haveMAD2);
|
||||||
if (res)
|
|
||||||
return res;
|
|
||||||
|
|
||||||
if (verbose)
|
if (verbose && !res)
|
||||||
PrintAndLogEx(NORMAL, "CRC8-MAD OK.");
|
PrintAndLogEx(NORMAL, "CRC8-MAD OK.");
|
||||||
|
|
||||||
// info byte
|
// info byte
|
||||||
|
@ -249,10 +245,8 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool verbose) {
|
||||||
PrintAndLogEx(NORMAL, "16 MAD2");
|
PrintAndLogEx(NORMAL, "16 MAD2");
|
||||||
|
|
||||||
int res = madCRCCheck(sector, true, 2);
|
int res = madCRCCheck(sector, true, 2);
|
||||||
if (res)
|
|
||||||
return res;
|
|
||||||
|
|
||||||
if (verbose)
|
if (verbose && !res)
|
||||||
PrintAndLogEx(NORMAL, "CRC8-MAD OK.");
|
PrintAndLogEx(NORMAL, "CRC8-MAD OK.");
|
||||||
|
|
||||||
uint8_t InfoByte = sector[1] & 0x3f;
|
uint8_t InfoByte = sector[1] & 0x3f;
|
||||||
|
|
Loading…
Reference in a new issue