]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/mifarecmd.c
fixing iso14443b (issue #103):
[proxmark3-svn] / armsrc / mifarecmd.c
index 2a21ac4869b0b1a348c7b89534ab6a73f2c64228..939c90028796ef823e0e0c3d5acfbd841cf4f48f 100644 (file)
@@ -254,7 +254,6 @@ void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain)
 {\r
        // free eventually allocated BigBuf memory\r
        BigBuf_free();\r
-       // clear trace\r
        clear_trace();\r
 \r
        // params\r
@@ -305,7 +304,7 @@ void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain)
        }\r
 \r
        for (int i = 0; i < blocks; i++){\r
-               if ((i*4) + 4 > CARD_MEMORY_SIZE) {\r
+               if ((i*4) + 4 >= CARD_MEMORY_SIZE) {\r
                        Dbprintf("Data exceeds buffer!!");\r
                        break;\r
                }\r
@@ -337,16 +336,11 @@ void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain)
        if (MF_DBGLEVEL >= MF_DBG_EXTENDED) Dbprintf("Blocks read %d", countblocks);\r
 \r
        countblocks *= 4;\r
-/*\r
-       LED_B_ON();\r
-       for(size_t i=0; i < countblocks; i += USB_CMD_DATA_SIZE) {\r
-               size_t len = MIN((countblocks - i),USB_CMD_DATA_SIZE);\r
-               cmd_send(CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K,i,len,countblocks,dataout+i,len);\r
-       }\r
-*/\r
+\r
        cmd_send(CMD_ACK, 1, countblocks, BigBuf_max_traceLen(), 0, 0);\r
        FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);\r
        LEDsoff();\r
+       BigBuf_free();\r
 }\r
 \r
 //-----------------------------------------------------------------------------\r
@@ -421,7 +415,8 @@ void MifareWriteBlock(uint8_t arg0, uint8_t arg1, uint8_t arg2, uint8_t *datain)
        LEDsoff();\r
 }\r
 \r
-void MifareUWriteBlock(uint8_t arg0, uint8_t *datain)\r
+/* // Command not needed but left for future testing \r
+void MifareUWriteBlockCompat(uint8_t arg0, uint8_t *datain)\r
 {\r
        uint8_t blockNo = arg0;\r
        byte_t blockdata[16] = {0x00};\r
@@ -441,7 +436,7 @@ void MifareUWriteBlock(uint8_t arg0, uint8_t *datain)
                return;\r
        };\r
 \r
-       if(mifare_ultra_writeblock(blockNo, blockdata)) {\r
+       if(mifare_ultra_writeblock_compat(blockNo, blockdata)) {\r
                if (MF_DBGLEVEL >= 1)   Dbprintf("Write block error");\r
                OnError(0);\r
                return; };\r
@@ -458,6 +453,7 @@ void MifareUWriteBlock(uint8_t arg0, uint8_t *datain)
        FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);\r
        LEDsoff();\r
 }\r
+*/\r
 \r
 // Arg0   : Block to write to.\r
 // Arg1   : 0 = use no authentication.\r
@@ -465,7 +461,7 @@ void MifareUWriteBlock(uint8_t arg0, uint8_t *datain)
 //          2 = use 0x1B authentication.\r
 // datain : 4 first bytes is data to be written.\r
 //        : 4/16 next bytes is authentication key.\r
-void MifareUWriteBlock_Special(uint8_t arg0, uint8_t arg1, uint8_t *datain)\r
+void MifareUWriteBlock(uint8_t arg0, uint8_t arg1, uint8_t *datain)\r
 {\r
        uint8_t blockNo = arg0;\r
        bool useKey = (arg1 == 1); //UL_C\r
@@ -507,7 +503,7 @@ void MifareUWriteBlock_Special(uint8_t arg0, uint8_t arg1, uint8_t *datain)
                }\r
        }\r
 \r
-       if(mifare_ultra_special_writeblock(blockNo, blockdata)) {\r
+       if(mifare_ultra_writeblock(blockNo, blockdata)) {\r
                if (MF_DBGLEVEL >= 1) Dbprintf("Write block error");\r
                OnError(0);\r
                return;\r
@@ -547,7 +543,7 @@ void MifareUSetPwd(uint8_t arg0, uint8_t *datain){
        blockdata[1] = pwd[6];\r
        blockdata[2] = pwd[5];\r
        blockdata[3] = pwd[4];\r
-       if(mifare_ultra_special_writeblock( 44, blockdata)) {\r
+       if(mifare_ultra_writeblock( 44, blockdata)) {\r
                if (MF_DBGLEVEL >= 1) Dbprintf("Write block error");\r
                OnError(44);\r
                return;\r
@@ -557,7 +553,7 @@ void MifareUSetPwd(uint8_t arg0, uint8_t *datain){
        blockdata[1] = pwd[2];\r
        blockdata[2] = pwd[1];\r
        blockdata[3] = pwd[0];\r
-       if(mifare_ultra_special_writeblock( 45, blockdata)) {\r
+       if(mifare_ultra_writeblock( 45, blockdata)) {\r
                if (MF_DBGLEVEL >= 1) Dbprintf("Write block error");\r
                OnError(45);\r
                return;\r
@@ -567,7 +563,7 @@ void MifareUSetPwd(uint8_t arg0, uint8_t *datain){
        blockdata[1] = pwd[14];\r
        blockdata[2] = pwd[13];\r
        blockdata[3] = pwd[12];\r
-       if(mifare_ultra_special_writeblock( 46, blockdata)) {\r
+       if(mifare_ultra_writeblock( 46, blockdata)) {\r
                if (MF_DBGLEVEL >= 1) Dbprintf("Write block error");\r
                OnError(46);\r
                return;\r
@@ -577,7 +573,7 @@ void MifareUSetPwd(uint8_t arg0, uint8_t *datain){
        blockdata[1] = pwd[10];\r
        blockdata[2] = pwd[9];\r
        blockdata[3] = pwd[8];\r
-       if(mifare_ultra_special_writeblock( 47, blockdata)) {\r
+       if(mifare_ultra_writeblock( 47, blockdata)) {\r
                if (MF_DBGLEVEL >= 1) Dbprintf("Write block error");\r
                OnError(47);\r
                return;\r
@@ -721,7 +717,7 @@ void MifareNested(uint32_t arg0, uint32_t arg1, uint32_t calibrate, uint8_t *dat
                LED_B_OFF();\r
        \r
        }\r
-//  -------------------------------------------------------------------------------------------------  \r
+       //  -------------------------------------------------------------------------------------------------   \r
        \r
        LED_C_ON();\r
 \r
@@ -750,7 +746,7 @@ void MifareNested(uint32_t arg0, uint32_t arg1, uint32_t calibrate, uint8_t *dat
 \r
                        // nested authentication\r
                        auth2_time = auth1_time + delta_time;\r
-                       len = mifare_sendcmd_shortex(pcs, AUTH_NESTED, 0x60 + (targetKeyType & 0x01), targetBlockNo, receivedAnswer, par, &auth2_time);\r
+                       len = mifare_sendcmd_short(pcs, AUTH_NESTED, 0x60 + (targetKeyType & 0x01), targetBlockNo, receivedAnswer, par, &auth2_time);\r
                        if (len != 4) {\r
                                if (MF_DBGLEVEL >= 1)   Dbprintf("Nested: Auth2 error len=%d", len);\r
                                continue;\r
@@ -1270,14 +1266,12 @@ void Mifare_DES_Auth2(uint32_t arg0, uint8_t *datain){
        isOK = mifare_desfire_des_auth2(cuid, key, dataout);\r
        \r
        if( isOK) {\r
-           if (MF_DBGLEVEL >= MF_DBG_EXTENDED) \r
-                       Dbprintf("Authentication part2: Failed");  \r
-               //OnError(4);\r
+               if (MF_DBGLEVEL >= MF_DBG_EXTENDED) Dbprintf("Authentication part2: Failed");  \r
+               OnError(4);\r
                return;\r
        }\r
 \r
-       if (MF_DBGLEVEL >= MF_DBG_EXTENDED) \r
-               DbpString("AUTH 2 FINISHED");\r
+       if (MF_DBGLEVEL >= MF_DBG_EXTENDED) DbpString("AUTH 2 FINISHED");\r
 \r
        cmd_send(CMD_ACK, isOK, 0, 0, dataout, sizeof(dataout));\r
        FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);\r
Impressum, Datenschutz