Procházet zdrojové kódy

1342 add mifare infineon (#1346)

* Adding MIFARE 1K Infineon Compatibility
  As per Issue #1342,
  MIFARE Classic 1K Cards from NXP have the SAK value of 0x08.
  MIFARE Classic 1K Cards from Infineon have an SAK value of 0x88.
  Adding the SAK values accordingly so that Infineon tags are properly handled.
quantum-x před 3 roky
rodič
revize
8632c77d68

+ 2 - 2
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) {
 bool mf_classic_check_card_type(uint8_t ATQA0, uint8_t ATQA1, uint8_t SAK) {
     UNUSED(ATQA1);
     UNUSED(ATQA1);
-    if((ATQA0 == 0x44 || ATQA0 == 0x04) && (SAK == 0x08)) {
+    if((ATQA0 == 0x44 || ATQA0 == 0x04) && (SAK == 0x08 || SAK == 0x88)) {
         return true;
         return true;
     } else if((ATQA0 == 0x42 || ATQA0 == 0x02) && (SAK == 0x18)) {
     } else if((ATQA0 == 0x42 || ATQA0 == 0x02) && (SAK == 0x18)) {
         return true;
         return true;
@@ -219,7 +219,7 @@ bool mf_classic_get_type(
     furi_assert(reader);
     furi_assert(reader);
     memset(reader, 0, sizeof(MfClassicReader));
     memset(reader, 0, sizeof(MfClassicReader));
 
 
-    if((ATQA0 == 0x44 || ATQA0 == 0x04) && (SAK == 0x08)) {
+    if((ATQA0 == 0x44 || ATQA0 == 0x04) && (SAK == 0x08 || SAK == 0x88)) {
         reader->type = MfClassicType1k;
         reader->type = MfClassicType1k;
     } else if((ATQA0 == 0x42 || ATQA0 == 0x02) && (SAK == 0x18)) {
     } else if((ATQA0 == 0x42 || ATQA0 == 0x02) && (SAK == 0x18)) {
         reader->type = MfClassicType4k;
         reader->type = MfClassicType4k;

+ 1 - 1
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)) {
     if((ATQA0 == 0x44) && (ATQA1 == 0x00) && (SAK == 0x00)) {
         type = MifareTypeUltralight;
         type = MifareTypeUltralight;
     } else if(
     } else if(
-        ((ATQA0 == 0x44 || ATQA0 == 0x04) && (SAK == 0x08)) ||
+        ((ATQA0 == 0x44 || ATQA0 == 0x04) && (SAK == 0x08 || SAK == 0x88)) ||
         ((ATQA0 == 0x42 || ATQA0 == 0x02) && (SAK == 0x18))) {
         ((ATQA0 == 0x42 || ATQA0 == 0x02) && (SAK == 0x18))) {
         type = MifareTypeClassic;
         type = MifareTypeClassic;
     } else if(ATQA0 == 0x44 && ATQA1 == 0x03 && SAK == 0x20) {
     } else if(ATQA0 == 0x44 && ATQA1 == 0x03 && SAK == 0x20) {