]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlft55xx.c
A lot of changes...
[proxmark3-svn] / client / cmdlft55xx.c
index b357e71c30c50e327f42cbe346475614685da428..5dc5bbee6aa4db03059cf849b1f6a2b4ddfc84a3 100644 (file)
@@ -37,7 +37,7 @@ int usage_t55xx_config(){
        PrintAndLog("Options:        ");\r
        PrintAndLog("       h                        This help");\r
        PrintAndLog("       b <8|16|32|40|50|64|100|128>     Set bitrate");\r
-       PrintAndLog("       d <FSK|FSK1|FSK1a|FSK2|FSK2a|ASK|PSK1|PSK2|NZ|BI|BIa>  Set demodulation FSK / ASK / PSK / NZ / Biphase / Biphase A");\r
+       PrintAndLog("       d <FSK|FSK1|FSK1a|FSK2|FSK2a|ASK|PSK1|PSK2|NRZ|BI|BIa>  Set demodulation FSK / ASK / PSK / NZ / Biphase / Biphase A");\r
        PrintAndLog("       i [1]                            Invert data signal, defaults to normal");\r
        PrintAndLog("       o [offset]                       Set offset, where data should start decode in bitstream");\r
        PrintAndLog("");\r
@@ -50,11 +50,11 @@ int usage_t55xx_config(){
 }\r
 int usage_t55xx_read(){\r
        PrintAndLog("Usage:  lf t55xx read <block> <password>");\r
-       PrintAndLog("     <block>, block number to read. Between 0-7");\r
-       PrintAndLog("     <password>, OPTIONAL password (8 hex characters)");\r
-       PrintAndLog("");\r
+    PrintAndLog("     <block>, block number to read. Between 0-7");\r
+    PrintAndLog("     <password>, OPTIONAL password (8 hex characters)");\r
+    PrintAndLog("");\r
        PrintAndLog("Examples:");\r
-       PrintAndLog("      lf t55xx read 0           - read data from block 0");\r
+    PrintAndLog("      lf t55xx read 0           - read data from block 0");\r
        PrintAndLog("      lf t55xx read 0 feedbeef  - read data from block 0 password feedbeef");\r
        PrintAndLog("");\r
        return 0;\r
@@ -63,8 +63,8 @@ int usage_t55xx_write(){
        PrintAndLog("Usage:  lf t55xx wr <block> <data> [password]");\r
        PrintAndLog("     <block>, block number to write. Between 0-7");\r
        PrintAndLog("     <data>,  4 bytes of data to write (8 hex characters)");\r
-       PrintAndLog("     [password], OPTIONAL password 4bytes (8 hex characters)");\r
-       PrintAndLog("");\r
+    PrintAndLog("     [password], OPTIONAL password 4bytes (8 hex characters)");\r
+    PrintAndLog("");\r
        PrintAndLog("Examples:");\r
        PrintAndLog("      lf t55xx wr 3 11223344           - write 11223344 to block 3");\r
        PrintAndLog("      lf t55xx wr 3 11223344 feedbeef  - write 11223344 to block 3 password feedbeef");\r
@@ -242,6 +242,7 @@ int CmdT55xxReadBlock(const char *Cmd) {
                c.d.asBytes[0] = 0x1; \r
        }\r
 \r
+       clearCommandBuffer();\r
        SendCommand(&c);\r
        if ( !WaitForResponseTimeout(CMD_ACK,NULL,2500) ) {\r
                PrintAndLog("command execution time out");\r
@@ -367,6 +368,7 @@ bool tryDetectModulation(){
                }\r
        } else {\r
                clk = GetAskClock("", FALSE, FALSE);\r
+               \r
                if (clk>0) {\r
                        sprintf(cmdStr,"%d", clk/2);\r
                        CmdLtrim(cmdStr);\r
@@ -666,9 +668,10 @@ int CmdT55xxWriteBlock(const char *Cmd)
 \r
        if (block > 7) {\r
                PrintAndLog("Block number must be between 0 and 7");\r
-               return 1;\r
+               return 2;\r
        }\r
        \r
+       UsbCommand resp;\r
        UsbCommand c = {CMD_T55XX_WRITE_BLOCK, {data, block, 0}};\r
        c.d.asBytes[0] = 0x0; \r
 \r
@@ -680,7 +683,12 @@ int CmdT55xxWriteBlock(const char *Cmd)
                c.d.asBytes[0] = 0x1; \r
                PrintAndLog("pwd   : 0x%08X", password);\r
        }\r
+       clearCommandBuffer();\r
        SendCommand(&c);\r
+       if (!WaitForResponseTimeout(CMD_ACK, &resp, 1000)){\r
+               PrintAndLog("Error occurred, device did not ACK write operation. (May be due to old firmware)");\r
+               return -1;\r
+       }\r
        return 0;\r
 }\r
 \r
@@ -878,6 +886,7 @@ int AquireData( uint8_t block ){
                // c.d.asBytes[0] = 0x1; \r
        // }\r
 \r
+       clearCommandBuffer();\r
        SendCommand(&c);\r
        if ( !WaitForResponseTimeout(CMD_ACK,NULL,2500) ) {\r
                PrintAndLog("command execution time out");\r
@@ -1050,6 +1059,7 @@ char * GetSelectedModulationStr( uint8_t id){
        return buf;\r
 }\r
 \r
+/*\r
 uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bits){\r
        \r
        int i = start;\r
@@ -1063,7 +1073,7 @@ uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bits){
 \r
        return tmp;\r
 }\r
-\r
+*/\r
 static command_t CommandTable[] =\r
 {\r
   {"help",   CmdHelp,           1, "This help"},\r
Impressum, Datenschutz