diff options
author | Equip <72751518+equipter@users.noreply.github.com> | 2022-07-05 18:34:21 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-05 18:34:21 +0300 |
commit | e147b2ceea7e69d637b45c26533662337289a0d1 (patch) | |
tree | 258745cd91f526bc670b9165cfb2a6980f975871 | |
parent | 8af2198684e92343fdd9bb6c8de2f95efc9d2d05 (diff) |
Added Javacard Emulated mifare classic 1K compatibility (#1369)
* Add Mifare classic 1k JC handling
Add mifare classic Javacard emulation handling
* Adding MIFARE 1K Javacard Emulation Compatibility
MIFARE Classic 1K Cards from NXP have the SAK value of 0x08.
MIFARE Classic 1K Cards that are emulated via javacard applet have an SAK value of 0x09.
Adding the SAK values accordingly so that Javacard emulated mifare classic tags are properly handled.
* update mifare_common.c
added javacard emulation handling for mifare classic 1k
Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
-rw-r--r-- | lib/nfc_protocols/mifare_classic.c | 4 | ||||
-rw-r--r-- | lib/nfc_protocols/mifare_common.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/lib/nfc_protocols/mifare_classic.c b/lib/nfc_protocols/mifare_classic.c index b6a1c23a..28334119 100644 --- a/lib/nfc_protocols/mifare_classic.c +++ b/lib/nfc_protocols/mifare_classic.c @@ -198,7 +198,7 @@ static bool mf_classic_is_allowed_access( bool mf_classic_check_card_type(uint8_t ATQA0, uint8_t ATQA1, uint8_t SAK) { UNUSED(ATQA1); - if((ATQA0 == 0x44 || ATQA0 == 0x04) && (SAK == 0x08 || SAK == 0x88)) { + if((ATQA0 == 0x44 || ATQA0 == 0x04) && (SAK == 0x08 || SAK == 0x88 || SAK == 0x09)) { return true; } else if((ATQA0 == 0x42 || ATQA0 == 0x02) && (SAK == 0x18)) { return true; @@ -219,7 +219,7 @@ bool mf_classic_get_type( furi_assert(reader); memset(reader, 0, sizeof(MfClassicReader)); - if((ATQA0 == 0x44 || ATQA0 == 0x04) && (SAK == 0x08 || SAK == 0x88)) { + if((ATQA0 == 0x44 || ATQA0 == 0x04) && (SAK == 0x08 || SAK == 0x88 || SAK == 0x09)) { reader->type = MfClassicType1k; } else if((ATQA0 == 0x42 || ATQA0 == 0x02) && (SAK == 0x18)) { reader->type = MfClassicType4k; diff --git a/lib/nfc_protocols/mifare_common.c b/lib/nfc_protocols/mifare_common.c index 78094cdd..fd622765 100644 --- a/lib/nfc_protocols/mifare_common.c +++ b/lib/nfc_protocols/mifare_common.c @@ -6,7 +6,7 @@ MifareType mifare_common_get_type(uint8_t ATQA0, uint8_t ATQA1, uint8_t SAK) { if((ATQA0 == 0x44) && (ATQA1 == 0x00) && (SAK == 0x00)) { type = MifareTypeUltralight; } else if( - ((ATQA0 == 0x44 || ATQA0 == 0x04) && (SAK == 0x08 || SAK == 0x88)) || + ((ATQA0 == 0x44 || ATQA0 == 0x04) && (SAK == 0x08 || SAK == 0x88 || SAK == 0x09)) || ((ATQA0 == 0x42 || ATQA0 == 0x02) && (SAK == 0x18))) { type = MifareTypeClassic; } else if(ATQA0 == 0x44 && ATQA1 == 0x03 && SAK == 0x20) { |