]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/mifarecmd.c
CHG: syntax suger..
[proxmark3-svn] / armsrc / mifarecmd.c
index c68a50e567b2a9e8fd3f44e8dbba2a57a4241dd7..423b6e95f04a7bbc53a66f7adcd371efd304c32a 100644 (file)
@@ -260,7 +260,7 @@ void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain)
        iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN);\r
 \r
        // free eventually allocated BigBuf memory\r
-       BigBuf_free();\r
+       BigBuf_free(); BigBuf_Clear_ext(false);\r
        clear_trace();\r
        set_tracing(true);\r
        \r
@@ -778,8 +778,8 @@ void MifareNested(uint32_t arg0, uint32_t arg1, uint32_t calibrate, uint8_t *dat
        iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN);\r
 \r
        // free eventually allocated BigBuf memory\r
-       BigBuf_free();\r
-\r
+       BigBuf_free(); BigBuf_Clear_ext(false);\r
+       \r
        if (calibrate) clear_trace();\r
        set_tracing(true);\r
 \r
@@ -832,7 +832,7 @@ void MifareNested(uint32_t arg0, uint32_t arg1, uint32_t calibrate, uint8_t *dat
 \r
                        nttmp = prng_successor(nt1, 100);                               //NXP Mifare is typical around 840,but for some unlicensed/compatible mifare card this can be 160\r
                        for (i = 101; i < 1200; i++) {\r
-                               nttmp = prng_successor_one(nttmp);\r
+                               nttmp = prng_successor(nttmp, 1);\r
                                if (nttmp == nt2) break;\r
                        }\r
 \r
@@ -914,7 +914,7 @@ void MifareNested(uint32_t arg0, uint32_t arg1, uint32_t calibrate, uint8_t *dat
                        ncount = 0;\r
                        nttest = prng_successor(nt1, dmin - 1);\r
                        for (j = dmin; j < dmax + 1; j++) {\r
-                               nttest = prng_successor_one(nttest);\r
+                               nttest = prng_successor(nttest, 1);\r
                                ks1 = nt2 ^ nttest;\r
 \r
                                if (valid_nonce(nttest, nt2, ks1, par_array)){\r
@@ -983,7 +983,7 @@ void MifareChkKeys(uint16_t arg0, uint8_t arg1, uint8_t arg2, uint8_t *datain)
        struct Crypto1State *pcs;\r
        pcs = &mpcs;\r
        \r
-       // clear debug level\r
+       // save old debuglevel, and tempory turn off dbg printing. speedissues.\r
        int OLD_MF_DBGLEVEL = MF_DBGLEVEL;      \r
        MF_DBGLEVEL = MF_DBG_NONE;\r
        \r
@@ -996,35 +996,33 @@ void MifareChkKeys(uint16_t arg0, uint8_t arg1, uint8_t arg2, uint8_t *datain)
                clear_trace();\r
        \r
        set_tracing(TRUE);\r
-\r
+       \r
        for (i = 0; i < keyCount; ++i) {\r
 \r
-               if (!iso14443a_select_card(uid, NULL, &cuid, true, 0)) {\r
-                       if (OLD_MF_DBGLEVEL >= 1)       Dbprintf("ChkKeys: Can't select card");\r
+               mifare_classic_halt(pcs, cuid);\r
+       \r
+               if (!iso14443a_select_card(uid, NULL, &cuid, true, 0))\r
                        break;\r
-               }\r
 \r
                ui64Key = bytes_to_num(datain + i * 6, 6);\r
-               if (mifare_classic_auth(pcs, cuid, blockNo, keyType, ui64Key, AUTH_FIRST)) {\r
-                       if (mifare_classic_halt(pcs, cuid))\r
-                               if (MF_DBGLEVEL >= 1)   Dbprintf("ChkKeys: Halt error");\r
+               \r
+               if (mifare_classic_auth(pcs, cuid, blockNo, keyType, ui64Key, AUTH_FIRST))\r
                        continue;\r
-               }\r
                \r
                isOK = 1;\r
                break;\r
        }\r
        \r
        LED_B_ON();\r
-    cmd_send(CMD_ACK,isOK,0,0,datain + i * 6,6);\r
+    cmd_send(CMD_ACK, isOK, 0, 0, datain + i * 6, 6);\r
 \r
+       // restore debug level\r
+       MF_DBGLEVEL = OLD_MF_DBGLEVEL;  \r
+       \r
        FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);\r
        LEDsoff();\r
        set_tracing(FALSE);\r
        crypto1_destroy(pcs);\r
-       \r
-       // restore debug level\r
-       MF_DBGLEVEL = OLD_MF_DBGLEVEL;  \r
 }\r
 \r
 //-----------------------------------------------------------------------------\r
@@ -1205,7 +1203,7 @@ void MifareCSetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain){
        \r
                // wipe tag, fill it with zeros\r
                if (workFlags & MAGIC_WIPE){\r
-                       ReaderTransmitBitsPar(wupC1,7,0, NULL);\r
+                       ReaderTransmitBitsPar(wupC1, 7, NULL, NULL);\r
                        if(!ReaderReceive(receivedAnswer, receivedAnswerPar) || (receivedAnswer[0] != 0x0a)) {\r
                                if (MF_DBGLEVEL >= MF_DBG_ERROR)        Dbprintf("wupC1 error");\r
                                errormsg = MAGIC_WIPE;\r
@@ -1224,7 +1222,7 @@ void MifareCSetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain){
 \r
                // write block\r
                if (workFlags & MAGIC_WUPC) {\r
-                       ReaderTransmitBitsPar(wupC1,7,0, NULL);\r
+                       ReaderTransmitBitsPar(wupC1, 7, NULL, NULL);\r
                        if(!ReaderReceive(receivedAnswer, receivedAnswerPar) || (receivedAnswer[0] != 0x0a)) {\r
                                if (MF_DBGLEVEL >= MF_DBG_ERROR)        Dbprintf("wupC1 error");\r
                                errormsg = MAGIC_WUPC;\r
@@ -1297,7 +1295,7 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain){
        //loop doesn't loop just breaks out if error or done\r
        while (true) {\r
                if (workFlags & MAGIC_WUPC) {\r
-                       ReaderTransmitBitsPar(wupC1,7,0, NULL);\r
+                       ReaderTransmitBitsPar(wupC1, 7, NULL, NULL);\r
                        if(!ReaderReceive(receivedAnswer, receivedAnswerPar) || (receivedAnswer[0] != 0x0a)) {\r
                                if (MF_DBGLEVEL >= MF_DBG_ERROR) Dbprintf("wupC1 error");\r
                                errormsg = MAGIC_WUPC;\r
@@ -1350,7 +1348,7 @@ void MifareCIdent(){
        uint8_t receivedAnswer[1] = {0x00};\r
        uint8_t receivedAnswerPar[1] = {0x00};\r
 \r
-       ReaderTransmitBitsPar(wupC1,7,0, NULL);\r
+       ReaderTransmitBitsPar(wupC1, 7, NULL, NULL);\r
        if(!ReaderReceive(receivedAnswer, receivedAnswerPar) || (receivedAnswer[0] != 0x0a)) {\r
                isOK = false;\r
        }\r
Impressum, Datenschutz