]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/iclass.c
bug fix. askdemod edits invert pointer, cannot be 0
[proxmark3-svn] / armsrc / iclass.c
index 7b4daa36bb3b6541e5b77fffbceb84189639ce02..9139d3bd9f5a0734f4b2e651ca4b503e4b0a6485 100644 (file)
@@ -1675,8 +1675,9 @@ uint8_t handshakeIclassTag(uint8_t *card_data)
 // Reader iClass Anticollission
 void ReaderIClass(uint8_t arg0) {
 
-       uint8_t card_data[6 * 8]={0xFF};
-    uint8_t last_csn[8]={0};
+       uint8_t card_data[6 * 8]={0};
+       memset(card_data, 0xFF, sizeof(card_data));
+       uint8_t last_csn[8]={0};
        
        //Read conf block CRC(0x01) => 0xfa 0x22
        uint8_t readConf[] = { ICLASS_CMD_READ_OR_IDENTIFY,0x01, 0xfa, 0x22};
@@ -1684,16 +1685,18 @@ void ReaderIClass(uint8_t arg0) {
        uint8_t readAA[] = { ICLASS_CMD_READ_OR_IDENTIFY,0x05, 0xde, 0x64};
 
 
-    int read_status= 0;
+       int read_status= 0;
        uint8_t result_status = 0;
-    bool abort_after_read = arg0 & FLAG_ICLASS_READER_ONLY_ONCE;
-
+       bool abort_after_read = arg0 & FLAG_ICLASS_READER_ONLY_ONCE;
+       bool try_once = arg0 & FLAG_ICLASS_READER_ONE_TRY;
        set_tracing(TRUE);
-    setupIclassReader();
+       setupIclassReader();
 
+       uint16_t tryCnt=0;
        while(!BUTTON_PRESS())
-    {
-
+       {
+               if (try_once && tryCnt > 5) break; 
+               tryCnt++;
                if(!tracing) {
                        DbpString("Trace full");
                        break;
@@ -1760,7 +1763,7 @@ void ReaderIClass(uint8_t arg0) {
 
                }
                LED_B_OFF();
-    }
+       }
     cmd_send(CMD_ACK,0,0,0,card_data, 0);
     LED_A_OFF();
 }
Impressum, Datenschutz