From 05f5fb3e47e4c46711afed39638ffb0c49084755 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Wed, 6 Mar 2019 00:43:59 +0200 Subject: [PATCH 1/2] del verbose on warning --- client/mifare/mad.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/client/mifare/mad.c b/client/mifare/mad.c index 46a95f89d..3f44fdbbf 100644 --- a/client/mifare/mad.c +++ b/client/mifare/mad.c @@ -111,15 +111,13 @@ int madCRCCheck(uint8_t *sector, bool verbose, int MADver) { if (MADver == 1) { uint8_t crc = CRC8Mad(§or[16 + 1], 15 + 16); if (crc != sector[16]) { - if (verbose) - PrintAndLogEx(WARNING, "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; }; } else { uint8_t crc = CRC8Mad(§or[1], 15 + 16 + 16); if (crc != sector[0]) { - if (verbose) - PrintAndLogEx(WARNING, "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; }; } From cfcdbcdceeca53ca019e42514284cf066442acd5 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Wed, 6 Mar 2019 00:50:12 +0200 Subject: [PATCH 2/2] added some checks into `madcheck` --- client/mifare/mad.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/client/mifare/mad.c b/client/mifare/mad.c index 3f44fdbbf..96a4bf152 100644 --- a/client/mifare/mad.c +++ b/client/mifare/mad.c @@ -133,6 +133,8 @@ uint16_t madGetAID(uint8_t *sector, int MADver, int sectorNo) { } int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) { + int res = 0; + if (!sector0) return 1; @@ -167,23 +169,21 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) if (haveMAD2) *haveMAD2 = (MADVer == 2); - int res = madCRCCheck(sector0, true, 1); - if (res) - return res; + res = madCRCCheck(sector0, true, 1); - if (verbose) + if (verbose && !res) PrintAndLogEx(NORMAL, "CRC8-MAD1 OK."); if (MADVer == 2 && sector10) { - int res = madCRCCheck(sector10, true, 2); - if (res) - return res; + int res2 = madCRCCheck(sector10, true, 2); + if (!res) + res = res2; - if (verbose) + if (verbose & !res2) PrintAndLogEx(NORMAL, "CRC8-MAD2 OK."); } - return 0; + return res; } int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen) { @@ -214,11 +214,8 @@ int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen int MAD1DecodeAndPrint(uint8_t *sector, bool verbose, bool *haveMAD2) { // check MAD1 only - int res = MADCheck(sector, NULL, verbose, haveMAD2); - - if (verbose && !res) - PrintAndLogEx(NORMAL, "CRC8-MAD OK."); - + MADCheck(sector, NULL, verbose, haveMAD2); + // info byte uint8_t InfoByte = sector[16 + 1] & 0x3f; if (InfoByte) { @@ -245,7 +242,7 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool verbose) { int res = madCRCCheck(sector, true, 2); if (verbose && !res) - PrintAndLogEx(NORMAL, "CRC8-MAD OK."); + PrintAndLogEx(NORMAL, "CRC8-MAD2 OK."); uint8_t InfoByte = sector[1] & 0x3f; PrintAndLogEx(NORMAL, "MAD2 Card publisher sector: 0x%02x", InfoByte);