]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlft55xx.c
Some more nasty bugs fixed in the lf t55xx manchester_decode method.
[proxmark3-svn] / client / cmdlft55xx.c
index 5804fbc7eb4921ed0da4d344a9d64ac636493f7c..09ba1ee769c1b7072a993ceaedfcfb878a9f2148 100644 (file)
 \r
 \r
 #define LF_TRACE_BUFF_SIZE 12000 // 32 x 32 x 10  (32 bit times numofblock (7), times clock skip..)\r
+#define LF_BITSSTREAM_LEN 1000 // more then 1000 bits shouldn't happend..  8block * 4 bytes * 8bits = \r
 static int CmdHelp(const char *Cmd);\r
 \r
 \r
 int CmdReadBlk(const char *Cmd)\r
 {\r
-       int Block = -1;\r
-       sscanf(Cmd, "%d", &Block);\r
+       int block = -1;\r
+       sscanf(Cmd, "%d", &block);\r
 \r
-       if ((Block > 7) | (Block < 0)) {\r
+       if ((block > 7) | (block < 0)) {\r
                PrintAndLog("Block must be between 0 and 7");\r
                return 1;\r
        }       \r
@@ -55,7 +56,7 @@ int CmdReadBlk(const char *Cmd)
        // }\r
        // GraphTraceLen = LF_TRACE_BUFF_SIZE;\r
        CmdSamples("12000");\r
-       ManchesterDemod(Block);\r
+       ManchesterDemod(block);\r
        // RepaintGraphWindow();\r
   return 0;\r
 }\r
@@ -175,10 +176,10 @@ int CmdReadTrace(const char *Cmd)
                GraphTraceLen = LF_TRACE_BUFF_SIZE;\r
        }\r
        \r
-       uint8_t bits[1000] = {0x00};\r
+       uint8_t bits[LF_BITSSTREAM_LEN] = {0x00};\r
        uint8_t * bitstream = bits;\r
        \r
-       manchester_decode(GraphBuffer, LF_TRACE_BUFF_SIZE, bitstream);\r
+       manchester_decode(GraphBuffer, LF_TRACE_BUFF_SIZE, bitstream, LF_BITSSTREAM_LEN);\r
        RepaintGraphWindow();\r
 \r
        uint8_t si = 5;\r
@@ -253,10 +254,10 @@ int CmdInfo(const char *Cmd){
                CmdReadBlk("0");\r
        }       \r
 \r
-       uint8_t bits[1000] = {0x00};\r
+       uint8_t bits[LF_BITSSTREAM_LEN] = {0x00};\r
        uint8_t * bitstream = bits;\r
        \r
-       manchester_decode(GraphBuffer, LF_TRACE_BUFF_SIZE, bitstream);\r
+       manchester_decode(GraphBuffer, LF_TRACE_BUFF_SIZE, bitstream, LF_BITSSTREAM_LEN);\r
        \r
        uint8_t si = 5;\r
        uint32_t bl0      = PackBits(si, 32, bitstream);\r
@@ -306,14 +307,13 @@ int CmdDump(const char *Cmd){
        char cmdp = param_getchar(Cmd, 0);\r
        char s[20];\r
        uint8_t pwd[4] = {0x00};\r
-               \r
-       if (strlen(Cmd)>1 || cmdp == 'h' || cmdp == 'H') {\r
+       bool hasPwd = ( strlen(Cmd) > 0);\r
+       \r
+       if ( cmdp == 'h' || cmdp == 'H') {\r
                PrintAndLog("Usage:  lf t55xx dump <password>");\r
                PrintAndLog("        sample: lf t55xx dump FFFFFFFF");\r
                return 0;\r
        }\r
-\r
-       bool hasPwd = ( strlen(Cmd) > 0);\r
        \r
        if ( hasPwd ){\r
                if (param_gethex(Cmd, 0, pwd, 4)) {\r
@@ -323,9 +323,9 @@ int CmdDump(const char *Cmd){
        }\r
 \r
        for ( int i = 0; i <8; ++i){\r
-               *s = 0;\r
+               memset(s,0,sizeof(s));\r
                if ( hasPwd ) {\r
-                       sprintf(s,"%d %d", i, pwd);\r
+                       sprintf(s,"%d %02x%02x%02x%02x", i, pwd[0],pwd[1],pwd[2],pwd[3]);\r
                        CmdReadBlkPWD(s);\r
                } else {\r
                        sprintf(s,"%d", i);\r
@@ -336,6 +336,9 @@ int CmdDump(const char *Cmd){
 }\r
 \r
 int CmdIceFsk(const char *Cmd){\r
+\r
+       if (!HasGraphData()) return 0;\r
+\r
        iceFsk3(GraphBuffer, LF_TRACE_BUFF_SIZE);\r
        RepaintGraphWindow();\r
        return 0;\r
@@ -344,16 +347,17 @@ int CmdIceManchester(const char *Cmd){
        ManchesterDemod( -1);\r
        return 0;\r
 }\r
-int ManchesterDemod(int block){\r
+int ManchesterDemod(int blockNum){\r
 \r
-       int  blockNum = -1;\r
+       if (!HasGraphData()) return 0;\r
+               \r
        uint8_t sizebyte = 32;\r
        uint8_t offset = 5;\r
        uint32_t blockData;\r
-       uint8_t  bits[1000] = {0x00};\r
+       uint8_t  bits[LF_BITSSTREAM_LEN] = {0x00};\r
        uint8_t * bitstream = bits;\r
        \r
-       manchester_decode(GraphBuffer, LF_TRACE_BUFF_SIZE, bitstream);  \r
+       manchester_decode(GraphBuffer, LF_TRACE_BUFF_SIZE, bitstream, LF_BITSSTREAM_LEN);       \r
     blockData = PackBits(offset, sizebyte, bitstream);\r
 \r
        if ( blockNum < 0)\r
Impressum, Datenschutz