change in detection

This commit is contained in:
iceman1001 2025-03-21 18:48:45 +01:00
commit c00b1c0b73

View file

@ -1839,21 +1839,28 @@ static int detect_nxp_card_print(uint8_t sak, uint16_t atqa, uint64_t select_sta
PrintAndLogEx(SUCCESS, "Possible types:"); PrintAndLogEx(SUCCESS, "Possible types:");
if ((sak & 0x02) != 0x02) { if ((sak & 0x02) != 0x02) {
if ((sak & 0x19) == 0x19) { if ((sak & 0x19) == 0x19) {
printTag("MIFARE Classic 2K"); printTag("MIFARE Classic 2K");
type |= MTCLASSIC; type |= MTCLASSIC;
} else if ((sak & 0x40) == 0x40) {
if ((atqa & 0x0110) == 0x0110)
printTag("P2P Support / Proprietary");
else
printTag("P2P Support / Android");
} else if ((sak & 0x40) == 0x40) {
if ((atqa & 0x0110) == 0x0110) {
printTag("P2P Support / Proprietary");
} else {
printTag("P2P Support / Android");
}
type |= MTISO18092; type |= MTISO18092;
} else if ((sak & 0x38) == 0x38) { } else if ((sak & 0x38) == 0x38) {
printTag("SmartMX with MIFARE Classic 4K"); printTag("SmartMX with MIFARE Classic 4K");
type |= MTCLASSIC; type |= MTCLASSIC;
} else if ((sak & 0x18) == 0x18) { } else if ((sak & 0x18) == 0x18) {
if (select_status == 1) { if (select_status == 1) {
if ((atqa & 0x0040) == 0x0040) { if ((atqa & 0x0040) == 0x0040) {
printTag("MIFARE Plus EV1 4K CL2 in SL1"); printTag("MIFARE Plus EV1 4K CL2 in SL1");
printTag("MIFARE Plus S 4K CL2 in SL1"); printTag("MIFARE Plus S 4K CL2 in SL1");
@ -1863,32 +1870,36 @@ static int detect_nxp_card_print(uint8_t sak, uint16_t atqa, uint64_t select_sta
printTag("MIFARE Plus S 4K in SL1"); printTag("MIFARE Plus S 4K in SL1");
printTag("MIFARE Plus X 4K in SL1"); printTag("MIFARE Plus X 4K in SL1");
} }
type |= MTPLUS; type |= MTPLUS;
} else { } else {
if ((atqa & 0x0040) == 0x0040) { if ((atqa & 0x0040) == 0x0040) {
printTag("MIFARE Classic 4K CL2"); printTag("MIFARE Classic 4K CL2");
} else { } else {
printTag("MIFARE Classic 4K"); printTag("MIFARE Classic 4K");
} }
type |= MTCLASSIC; type |= MTCLASSIC;
} }
} else if ((sak & 0x09) == 0x09) { } else if ((sak & 0x09) == 0x09) {
if ((atqa & 0x0040) == 0x0040) { if ((atqa & 0x0040) == 0x0040) {
printTag("MIFARE Mini 0.3K CL2"); printTag("MIFARE Mini 0.3K CL2");
} else { } else {
printTag("MIFARE Mini 0.3K"); printTag("MIFARE Mini 0.3K");
} }
type |= MTMINI; type |= MTMINI;
} else if ((sak & 0x28) == 0x28) { } else if ((sak & 0x28) == 0x28) {
printTag("SmartMX with MIFARE Classic 1K"); printTag("SmartMX with MIFARE Classic 1K");
printTag("FM1208-10 with MIFARE Classic 1K"); printTag("FM1208-10 with MIFARE Classic 1K");
printTag("FM1216-137 with MIFARE Classic 1K"); printTag("FM1216-137 with MIFARE Classic 1K");
type |= MTCLASSIC; type |= MTCLASSIC;
} else if ((sak & 0x08) == 0x08) { } else if ((sak & 0x08) == 0x08) {
if (select_status == 1) { if (select_status == 1) {
if ((atqa & 0x0040) == 0x0040) { if ((atqa & 0x0040) == 0x0040) {
printTag("MIFARE Plus EV1 2K CL2 in SL1"); printTag("MIFARE Plus EV1 2K CL2 in SL1");
printTag("MIFARE Plus S 2K CL2 in SL1"); printTag("MIFARE Plus S 2K CL2 in SL1");
@ -1900,17 +1911,17 @@ static int detect_nxp_card_print(uint8_t sak, uint16_t atqa, uint64_t select_sta
printTag("MIFARE Plus X 2K in SL1"); printTag("MIFARE Plus X 2K in SL1");
printTag("MIFARE Plus SE 1K"); printTag("MIFARE Plus SE 1K");
} }
type |= MTPLUS; type |= MTPLUS;
} else { } else {
if ((atqa & 0x0040) == 0x0040) { if ((atqa & 0x0040) == 0x0040) {
printTag("MIFARE Classic 1K CL2"); printTag("MIFARE Classic 1K CL2");
} else { } else {
printTag("MIFARE Classic 1K"); printTag("MIFARE Classic 1K");
} }
type |= MTCLASSIC; type |= MTCLASSIC;
} }
} else if ((sak & 0x11) == 0x11) { } else if ((sak & 0x11) == 0x11) {
printTag("MIFARE Plus 4K in SL2"); printTag("MIFARE Plus 4K in SL2");
type |= MTPLUS; type |= MTPLUS;
@ -1925,8 +1936,11 @@ static int detect_nxp_card_print(uint8_t sak, uint16_t atqa, uint64_t select_sta
printTag("MIFARE DESFire EV1 CL1"); printTag("MIFARE DESFire EV1 CL1");
type |= MTDESFIRE; type |= MTDESFIRE;
} else if ((sak & 0x20) == 0x20) { } else if ((sak & 0x20) == 0x20) {
if (select_status == 1) { if (select_status == 1) {
if ((atqa & 0x0040) == 0x0040) { if ((atqa & 0x0040) == 0x0040) {
if ((atqa & 0x0300) == 0x0300) { if ((atqa & 0x0300) == 0x0300) {
printTag("MIFARE DESFire CL2"); printTag("MIFARE DESFire CL2");
printTag("MIFARE DESFire EV1 256B/2K/4K/8K CL2"); printTag("MIFARE DESFire EV1 256B/2K/4K/8K CL2");
@ -1944,9 +1958,13 @@ static int detect_nxp_card_print(uint8_t sak, uint16_t atqa, uint64_t select_sta
} }
} else { } else {
if ((atqa & 0x0001) == 0x0001) { if (
((atqa & 0x0001) == 0x0001) ||
((atqa & 0x0004) == 0x0004)
) {
printTag("HID SEOS (smartmx / javacard)"); printTag("HID SEOS (smartmx / javacard)");
type |= HID_SEOS; type |= HID_SEOS;
} else { } else {
printTag("MIFARE Plus EV1 2K/4K in SL3"); printTag("MIFARE Plus EV1 2K/4K in SL3");
printTag("MIFARE Plus S 2K/4K in SL3"); printTag("MIFARE Plus S 2K/4K in SL3");
@ -2365,7 +2383,11 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) {
bad_ats = true; bad_ats = true;
} }
if (card.ats_len == 7 && memcmp(card.ats, "\x05\x78\x77\x80\x02\x9C\x3A", 7) == 0) { if (
(card.ats_len == 7 && memcmp(card.ats, "\x05\x78\x77\x80\x02\x9C\x3A", 7) == 0) ||
(card.ats_len == 7 && memcmp(card.ats, "\x05\x78\x77\x94\x02\x9C\x3A", 7) == 0)
)
{
isSEOS = true; isSEOS = true;
isNTAG424 = false; isNTAG424 = false;
isMifareDESFire = false; isMifareDESFire = false;