]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/iso14443a.c
revert SAK check
[proxmark3-svn] / armsrc / iso14443a.c
index 01026aa5e1c534ead774941be4637f06f32b3b11..33db9f223ef7b899b387c1ed1bd4583814217b88 100644 (file)
@@ -1698,6 +1698,13 @@ int iso14443a_select_card(byte_t *uid_ptr, iso14a_card_select_t *p_hi14a_card, u
        int cascade_level = 0;
        int len;
 
+       // init card struct
+       if(p_hi14a_card) {
+               p_hi14a_card->uidlen = 0;
+               memset(p_hi14a_card->uid, 0, 10);
+               p_hi14a_card->ats_len = 0;
+       }
+
        // Broadcast for a card, WUPA (0x52) will force response from all cards in the field
     ReaderTransmitBitsPar(wupa, 7, NULL, NULL);
        
@@ -1706,8 +1713,6 @@ int iso14443a_select_card(byte_t *uid_ptr, iso14a_card_select_t *p_hi14a_card, u
 
        if(p_hi14a_card) {
                memcpy(p_hi14a_card->atqa, resp, 2);
-               p_hi14a_card->uidlen = 0;
-               memset(p_hi14a_card->uid,0,10);
        }
 
        if (anticollision) {
@@ -1813,12 +1818,10 @@ int iso14443a_select_card(byte_t *uid_ptr, iso14a_card_select_t *p_hi14a_card, u
 
        if(p_hi14a_card) {
                p_hi14a_card->sak = sak;
-               p_hi14a_card->ats_len = 0;
        }
 
-       // non iso14443a compliant tag
-       // now not work
-       //if( (sak & 0x20) == 0) return 2; 
+       // PICC compilant with iso14443a-4 ---> (SAK & 0x20 != 0)
+       if( (sak & 0x20) == 0) return 2; 
 
        if (!no_rats) {
                // Request for answer to select
@@ -1909,7 +1912,7 @@ void ReaderIso14443a(UsbCommand *c)
        size_t lenbits = c->arg[1] >> 16;
        uint32_t timeout = c->arg[2];
        uint32_t arg0 = 0;
-       byte_t buf[USB_CMD_DATA_SIZE];
+       byte_t buf[USB_CMD_DATA_SIZE] = {0};
        uint8_t par[MAX_PARITY_SIZE];
        bool cantSELECT = false;
   
Impressum, Datenschutz