]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlft55xx.c
ADD: sprint_ascii function.
[proxmark3-svn] / client / cmdlft55xx.c
index 28149efff6f02268c7c050e20e7ea344b94aac3b..ec8c9de994a8b3d1292d6e231e40ead6bffdfe5a 100644 (file)
@@ -195,8 +195,8 @@ static int CmdHelp(const char *Cmd);
 \r
 void printT5xxHeader(uint8_t page){\r
        PrintAndLog("Reading Page %d:", page);  \r
-       PrintAndLog("blk | hex data | binary");\r
-       PrintAndLog("----+----------+---------------------------------");       \r
+       PrintAndLog("blk | hex data | binary                          | ascii");\r
+       PrintAndLog("----+----------+---------------------------------+-------");       \r
 }\r
 \r
 int CmdT55xxSetConfig(const char *Cmd) {\r
@@ -864,16 +864,18 @@ void printT55xxBlock(const char *blockNum){
                bits[i - config.offset] = DemodBuffer[i];\r
 \r
        blockData = PackBits(0, 32, bits);\r
+       uint8_t bytes[4] = {0};\r
+       num_to_bytes(blockData, 4, bytes);\r
 \r
-       PrintAndLog(" %s | %08X | %s", blockNum, blockData, sprint_bin(bits,32));\r
+       PrintAndLog(" %s | %08X | %s | %s", blockNum, blockData, sprint_bin(bits,32), sprint_ascii(bytes,4));\r
 }\r
 \r
 int special(const char *Cmd) {\r
        uint32_t blockData = 0;\r
        uint8_t bits[32] = {0x00};\r
 \r
-       PrintAndLog("OFFSET | DATA  | BINARY");\r
-       PrintAndLog("----------------------------------------------------");\r
+       PrintAndLog("OFFSET | DATA  | BINARY                             | ASCII");\r
+       PrintAndLog("-------+-------+------------------------------------+------");\r
        int i,j = 0;\r
        for (; j < 64; ++j){\r
                \r
@@ -1263,20 +1265,21 @@ int AquireData( uint8_t page, uint8_t block, bool pwdmode, uint32_t password ){
        //      bit1 = page to read from\r
        // arg1: which block to read\r
        // arg2: password\r
-       \r
        uint8_t arg0 = (page<<1) | pwdmode;\r
        UsbCommand c = {CMD_T55XX_READ_BLOCK, {arg0, block, password}};\r
-       \r
        clearCommandBuffer();\r
        SendCommand(&c);\r
-       if ( !WaitForResponseTimeout(CMD_ACK,NULL,2500) ) {\r
+       if ( !WaitForResponseTimeout(CMD_ACK, NULL, 2500) ) {\r
                PrintAndLog("command execution time out");\r
                return 0;\r
        }\r
 \r
-       uint8_t got[12000];\r
-       GetFromBigBuf(got,sizeof(got),0);\r
-       WaitForResponse(CMD_ACK,NULL);\r
+       uint8_t got[12288];\r
+       GetFromBigBuf(got, sizeof(got), 0);\r
+       if ( !WaitForResponseTimeout(CMD_ACK, NULL, 8000) ) {\r
+               PrintAndLog("command execution time out");\r
+               return 0;\r
+       }\r
        setGraphBuf(got, sizeof(got));\r
        return 1;\r
 }\r
@@ -1463,8 +1466,7 @@ int CmdT55xxBruteForce(const char *Cmd) {
                if (len > FILE_PATH_SIZE) len = FILE_PATH_SIZE;\r
                memcpy(filename, Cmd+2, len);\r
        \r
-               FILE * f = fopen( filename , "r");\r
-               \r
+               FILE * f = fopen( filename , "r");              \r
                if ( !f ) {\r
                        PrintAndLog("File: %s: not found or locked.", filename);\r
                        free(keyBlock);\r
@@ -1491,7 +1493,10 @@ int CmdT55xxBruteForce(const char *Cmd) {
                                if (!p) {\r
                                        PrintAndLog("Cannot allocate memory for defaultKeys");\r
                                        free(keyBlock);\r
-                                       fclose(f);\r
+                                       if (f) {\r
+                                               fclose(f);\r
+                                               f = NULL;\r
+                                       }\r
                                        return 2;\r
                                }\r
                                keyBlock = p;\r
@@ -1502,8 +1507,10 @@ int CmdT55xxBruteForce(const char *Cmd) {
                        keycnt++;\r
                        memset(buf, 0, sizeof(buf));\r
                }               \r
-               fclose(f);\r
-               \r
+               if (f) {\r
+                       fclose(f);\r
+                       f = NULL;\r
+               }\r
                if (keycnt == 0) {\r
                        PrintAndLog("No keys found in file");\r
                        free(keyBlock);\r
@@ -1514,7 +1521,13 @@ int CmdT55xxBruteForce(const char *Cmd) {
                // loop\r
                uint64_t testpwd = 0x00;\r
                for (uint16_t c = 0; c < keycnt; ++c ) {\r
-       \r
+\r
+                       if ( offline ) {\r
+                               printf("Device offline\n");\r
+                               free(keyBlock);\r
+                               return  2;\r
+                       }\r
+               \r
                        if (ukbhit()) {\r
                                ch = getchar();\r
                                (void)ch;\r
@@ -1526,8 +1539,7 @@ int CmdT55xxBruteForce(const char *Cmd) {
                        testpwd = bytes_to_num(keyBlock + 4*c, 4);\r
 \r
                        PrintAndLog("Testing %08X", testpwd);\r
-                       \r
-                       \r
+                                               \r
                        if ( !AquireData(T55x7_PAGE0, T55x7_CONFIGURATION_BLOCK, TRUE, testpwd)) {\r
                                PrintAndLog("Aquireing data from device failed. Quitting");\r
                                free(keyBlock);\r
@@ -1535,7 +1547,6 @@ int CmdT55xxBruteForce(const char *Cmd) {
                        }\r
                        \r
                        found = tryDetectModulation();\r
-\r
                        if ( found ) {\r
                                PrintAndLog("Found valid password: [%08X]", testpwd);\r
                                free(keyBlock);\r
@@ -1605,7 +1616,8 @@ int tryOnePassword(uint32_t password) {
 \r
        if (tryDetectModulation())\r
                return 1;\r
-       else return 0;\r
+       else \r
+               return 0;\r
 }\r
 \r
 int CmdT55xxRecoverPW(const char *Cmd) {\r
Impressum, Datenschutz