]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/mifarecmd.c
optimized loop in MifareNested (issue 36)
[proxmark3-svn] / armsrc / mifarecmd.c
index fca4f69b6dac9bc5afb58a4c3c94ccb213ab8d7b..b2b38edf91f87cf1c294c28f62507ee873059da0 100644 (file)
@@ -298,7 +298,7 @@ void MifareNested(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *datain)
        uint8_t uid[8];\r
        uint32_t cuid, nt1, nt2, nttmp, nttest, par, ks1;\r
        uint8_t par_array[4];\r
        uint8_t uid[8];\r
        uint32_t cuid, nt1, nt2, nttmp, nttest, par, ks1;\r
        uint8_t par_array[4];\r
-       nestedVector nvector[NES_MAX_INFO + 1][10];\r
+       nestedVector nvector[NES_MAX_INFO + 1][11];\r
        int nvectorcount[NES_MAX_INFO + 1];\r
        int ncount = 0;\r
        UsbCommand ack = {CMD_ACK, {0, 0, 0}};\r
        int nvectorcount[NES_MAX_INFO + 1];\r
        int ncount = 0;\r
        UsbCommand ack = {CMD_ACK, {0, 0, 0}};\r
@@ -417,8 +417,9 @@ void MifareNested(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *datain)
                }\r
                \r
                ncount = 0;\r
                }\r
                \r
                ncount = 0;\r
-               for (m = dmin - NS_TOLERANCE; m < dmax + NS_TOLERANCE; m++) {\r
-                       nttest = prng_successor(nt1, m);\r
+               nttest = prng_successor(nt1, dmin - NS_TOLERANCE);\r
+               for (m = dmin - NS_TOLERANCE + 1; m < dmax + NS_TOLERANCE; m++) {\r
+                       nttest = prng_successor(nttest, 1);\r
                        ks1 = nt2 ^ nttest;\r
 \r
                        if (valid_nonce(nttest, nt2, ks1, par_array) && (ncount < 11)){\r
                        ks1 = nt2 ^ nttest;\r
 \r
                        if (valid_nonce(nttest, nt2, ks1, par_array) && (ncount < 11)){\r
@@ -636,6 +637,7 @@ void MifareECardLoad(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *datai
 \r
        // variables\r
        byte_t dataoutbuf[16];\r
 \r
        // variables\r
        byte_t dataoutbuf[16];\r
+       byte_t dataoutbuf2[16];\r
        uint8_t uid[8];\r
 \r
        // clear trace\r
        uint8_t uid[8];\r
 \r
        // clear trace\r
@@ -687,6 +689,15 @@ void MifareECardLoad(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *datai
                                break;\r
                        };\r
                        emlSetMem(dataoutbuf, sectorNo * 4 + 2, 1);\r
                                break;\r
                        };\r
                        emlSetMem(dataoutbuf, sectorNo * 4 + 2, 1);\r
+\r
+                       // get block 3 bytes 6-9\r
+                       if(mifare_classic_readblock(pcs, cuid, sectorNo * 4 + 3, dataoutbuf)) {\r
+                               if (MF_DBGLEVEL >= 1)   Dbprintf("Read block 3 error");\r
+                               break;\r
+                       };\r
+                       emlGetMem(dataoutbuf2, sectorNo * 4 + 3, 1);\r
+                       memcpy(&dataoutbuf2[6], &dataoutbuf[6], 4);\r
+                       emlSetMem(dataoutbuf2,  sectorNo * 4 + 3, 1);\r
                }\r
 \r
                if(mifare_classic_halt(pcs, cuid)) {\r
                }\r
 \r
                if(mifare_classic_halt(pcs, cuid)) {\r
@@ -699,14 +710,15 @@ void MifareECardLoad(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *datai
 \r
        //  ----------------------------- crypto1 destroy\r
        crypto1_destroy(pcs);\r
 \r
        //  ----------------------------- crypto1 destroy\r
        crypto1_destroy(pcs);\r
+\r
+       FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);\r
+       LEDsoff();\r
        \r
        if (MF_DBGLEVEL >= 2) DbpString("EMUL FILL SECTORS FINISHED");\r
 \r
        // add trace trailer\r
        memset(uid, 0x44, 4);\r
        LogTrace(uid, 4, 0, 0, TRUE);\r
        \r
        if (MF_DBGLEVEL >= 2) DbpString("EMUL FILL SECTORS FINISHED");\r
 \r
        // add trace trailer\r
        memset(uid, 0x44, 4);\r
        LogTrace(uid, 4, 0, 0, TRUE);\r
-       \r
-       Dbprintf("Loaded.");\r
 }\r
 \r
 //-----------------------------------------------------------------------------\r
 }\r
 \r
 //-----------------------------------------------------------------------------\r
Impressum, Datenschutz