]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
CHG: 'HF MF C*' (chinese backdoor commands) According to douniwan5788 some magic...
authoriceman1001 <iceman@iuse.se>
Fri, 28 Oct 2016 18:43:07 +0000 (20:43 +0200)
committericeman1001 <iceman@iuse.se>
Fri, 28 Oct 2016 18:43:07 +0000 (20:43 +0200)
ref: https://github.com/douniwan5788/proxmark3/commit/13b71e58fddf20c5d42b8f0af1d72c795139b86f

armsrc/mifarecmd.c
armsrc/mifareutil.c

index 49730af98cae3f30edebcea8bafbb88168a6b34d..46478735167a8044d21ce06a8f56650a6969bdde 100644 (file)
@@ -1217,10 +1217,9 @@ void MifareCSetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain){
                        if(!iso14443a_select_card(uid, NULL, &cuid, true, 0)) {\r
                                if (MF_DBGLEVEL >= MF_DBG_ERROR)        Dbprintf("Can't select card");\r
                                errormsg = MAGIC_UID;\r
                        if(!iso14443a_select_card(uid, NULL, &cuid, true, 0)) {\r
                                if (MF_DBGLEVEL >= MF_DBG_ERROR)        Dbprintf("Can't select card");\r
                                errormsg = MAGIC_UID;\r
-                               // break;\r
                        }\r
                        }\r
-                       \r
-                       if ( mifare_classic_halt_ex(NULL) ) break;\r
+                       mifare_classic_halt_ex(NULL);\r
+                       break;\r
                }\r
        \r
                // wipe tag, fill it with zeros\r
                }\r
        \r
                // wipe tag, fill it with zeros\r
@@ -1239,7 +1238,7 @@ void MifareCSetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain){
                                break;\r
                        }\r
 \r
                                break;\r
                        }\r
 \r
-                       if ( mifare_classic_halt_ex(NULL) ) break;\r
+                       mifare_classic_halt_ex(NULL);\r
                }       \r
 \r
                // write block\r
                }       \r
 \r
                // write block\r
@@ -1276,7 +1275,7 @@ void MifareCSetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain){
                }       \r
        \r
                if (workFlags & MAGIC_OFF) \r
                }       \r
        \r
                if (workFlags & MAGIC_OFF) \r
-                       if ( mifare_classic_halt_ex(NULL) ) break;\r
+                       mifare_classic_halt_ex(NULL);\r
                \r
                isOK = true;\r
                break;\r
                \r
                isOK = true;\r
                break;\r
index 3d6dce41d5e0884722145ba2aacd8a69567f9271..9c6adcce72074872a0efd16c9804e74c15c62833 100644 (file)
@@ -474,7 +474,10 @@ int mifare_classic_halt_ex(struct Crypto1State *pcs) {
        uint8_t receivedAnswer[4] = {0x00, 0x00, 0x00, 0x00};\r
        len = mifare_sendcmd_short(pcs, (pcs == NULL) ? CRYPT_NONE : CRYPT_ALL, 0x50, 0x00, receivedAnswer, NULL, NULL);\r
        if (len != 0) {\r
        uint8_t receivedAnswer[4] = {0x00, 0x00, 0x00, 0x00};\r
        len = mifare_sendcmd_short(pcs, (pcs == NULL) ? CRYPT_NONE : CRYPT_ALL, 0x50, 0x00, receivedAnswer, NULL, NULL);\r
        if (len != 0) {\r
-               if (MF_DBGLEVEL >= MF_DBG_ERROR) Dbprintf("halt error. response len: %x", len);  \r
+               if (MF_DBGLEVEL >= MF_DBG_ERROR) \r
+                       Dbprintf("halt error. response len: %x data:%02X %02X %02X %02X", len, receivedAnswer[0],receivedAnswer[1],receivedAnswer[2],receivedAnswer[3]);  \r
+               if (len == 1 && receivedAnswer[0] == 0x04)\r
+                       return 4;\r
                return 1;\r
        }\r
        return 0;\r
                return 1;\r
        }\r
        return 0;\r
Impressum, Datenschutz