]> cvs.zerfleddert.de Git - proxmark3-svn/commitdiff
FIX: fastread dont do multiplication by zero, thanks @marshmellow42
authoriceman1001 <iceman@iuse.se>
Mon, 22 Jun 2015 07:49:12 +0000 (09:49 +0200)
committericeman1001 <iceman@iuse.se>
Mon, 22 Jun 2015 07:49:12 +0000 (09:49 +0200)
ADD: "hf 14a sim t 7" now implements a simple incr_counter command. it sends ACK to all requests.
ADD: "hf 14a sim t 7" now prints the password when a "0x1B" (Authenticate) command is received.

armsrc/iso14443a.c

index d887cd5560d590da810cb12e75cc83c0243e7c37..9f2b6d9477d14764cf88a0c07f01f68d16b39974 100644 (file)
@@ -1188,7 +1188,7 @@ void SimulateIso14443aTag(int tagType, int flags, int uid_2nd, byte_t* data)
                                
                                uint8_t emdata[MAX_FRAME_SIZE];
                                int start =  receivedCmd[1] * 4;
-                               int len   = (receivedCmd[2] - receivedCmd[1]) * 4;
+                               int len   = (receivedCmd[2] - receivedCmd[1] + 1) * 4;
                                emlGetMemBt( emdata, start, len);
                                AppendCrc14443a(emdata, len);
                                EmSendCmdEx(emdata, len+2, false);                              
@@ -1202,12 +1202,22 @@ void SimulateIso14443aTag(int tagType, int flags, int uid_2nd, byte_t* data)
                                                                  0xce,0x21,0x24,0x5b,0xa6,0x7a,0x79,0x07,
                                                                  0x00,0x00};
                                AppendCrc14443a(data, sizeof(data)-2);
-                               EmSendCmdEx(data,sizeof(data),false);                           
+                               EmSendCmdEx(data,sizeof(data),false);
                                p_response = NULL;                                      
                } else if(receivedCmd[0] == 0x39 && tagType == 7) {     // Received a READ COUNTER -- 
                                uint8_t data[] =  {0x00,0x00,0x00,0x14,0xa5};
                                EmSendCmdEx(data,sizeof(data),false);                           
                                p_response = NULL;
+               } else if(receivedCmd[0] == 0xA5 && tagType == 7) {     // Received a INC COUNTER -- 
+                       // number of counter
+                       //uint8_t counter = receivedCmd[1];
+                       //uint32_t val = bytes_to_num(receivedCmd+2,4);
+                       
+                       // send ACK
+                       uint8_t ack[] = {0x0a};
+                       EmSendCmdEx(ack,sizeof(ack),false);
+                       p_response = NULL;
+                       
                } else if(receivedCmd[0] == 0x3E && tagType == 7) {     // Received a CHECK_TEARING_EVENT -- 
                                p_response = &responses[9];                             
                } else if(receivedCmd[0] == 0x50) {     // Received a HALT
@@ -1281,6 +1291,8 @@ void SimulateIso14443aTag(int tagType, int flags, int uid_2nd, byte_t* data)
                {
                        if ( tagType == 7 ) {
                                p_response =  &responses[8]; // PACK response
+                               uint32_t pwd = bytes_to_num(receivedCmd+1,4);
+                               Dbprintf("Auth attempt: %08x", pwd);    
                        }
                }
                else {
Impressum, Datenschutz