- Restored the 'reset' command
authoredouard@lafargue.name <edouard@lafargue.name@ef4ab9da-24cd-11de-8aaa-f3a34680c41f>
Mon, 27 Apr 2009 19:56:43 +0000 (19:56 +0000)
committeredouard@lafargue.name <edouard@lafargue.name@ef4ab9da-24cd-11de-8aaa-f3a34680c41f>
Mon, 27 Apr 2009 19:56:43 +0000 (19:56 +0000)
- Linux client: detects offline mode and blocks commands which need a connected Proxmark3 (still do to on Windows)

armsrc/appmain.c
linux/gui.c
linux/proxgui.h
linux/proxmark3.c
winsrc/command.cpp
winsrc/gui.cpp
winsrc/prox.h

index 3cbe5c4f07558d251c729f19798c2606e2318f03..18b8d64a6b10e1e32fd25c4d71d51d5c492b0121 100644 (file)
@@ -704,6 +704,7 @@ void UsbPacketReceived(BYTE *packet, int len)
 #endif\r
         case CMD_SETUP_WRITE:\r
                case CMD_FINISH_WRITE:\r
+               case CMD_HARDWARE_RESET:\r
                        USB_D_PLUS_PULLUP_OFF();\r
                        SpinDelay(1000);\r
                        SpinDelay(1000);\r
@@ -713,6 +714,7 @@ void UsbPacketReceived(BYTE *packet, int len)
                        }\r
                        break;\r
 \r
+\r
                default:\r
                        DbpString("unknown command");\r
                        break;\r
index 6d442f0edf04ffbfd18793f925bb93ad82ffa843..2179a5ece819cc9bac131a67f46800a67bb4fb97 100644 (file)
@@ -10,6 +10,7 @@ int GraphBuffer[MAX_GRAPH_TRACE_LEN];
 int GraphTraceLen;
 double CursorScaleFactor;
 int CommandFinished;
+int offline;
 
 static char *logfilename = "proxmark3.log";
 
index c1e9198faf12c2e4b52ba90b642a590bed1503d0..786d93615de5c31cef5dfde171354d93f513f012 100644 (file)
@@ -14,6 +14,7 @@ extern int GraphBuffer[MAX_GRAPH_TRACE_LEN];
 extern int GraphTraceLen;
 extern double CursorScaleFactor;
 extern int CommandFinished;
+extern int offline;
 
 #ifdef __cplusplus
 }
index b3621af0af59a9736f5d633dde53a6f7853dacde..2839db93b946222a40292e4064ce61261582cab5 100644 (file)
@@ -86,8 +86,10 @@ int main(int argc, char **argv)
        if (!(devh = OpenProxmark(1))) {
                fprintf(stderr,"PROXMARK3: NOT FOUND!\n");
                marg.usb_present = 0;
+               offline = 1;
        } else {
                marg.usb_present = 1;
+               offline = 0;
        }
 
        pthread_create(&main_loop_t, NULL, &main_loop, &marg);
index 9599645d1faa9e3cddb206158258776578dd6fa4..4b18d0a7a310999ac779c4c189731cb66787e15e 100644 (file)
@@ -42,6 +42,14 @@ static void GetFromBigBuf(BYTE *dest, int bytes)
        }\r
 }\r
 \r
+static void CmdReset(char *str)\r
+{\r
+       UsbCommand c;\r
+       c.cmd = CMD_HARDWARE_RESET;\r
+       SendCommand(&c, FALSE);\r
+}\r
+\r
+\r
 static void CmdQuit(char *str)\r
 {\r
        exit(0);\r
@@ -1829,6 +1837,8 @@ static void CmdLcd(char *str)
        }\r
 }\r
 \r
+\r
+\r
 static void CmdTest(char *str)\r
 {\r
 }\r
@@ -1866,59 +1876,60 @@ static struct {
        int             offline;  // 1 if the command can be used when in offline mode\r
        char            *docString;
 } CommandTable[] = {\r
-       "tune",                 CmdTune,0,              "measure antenna tuning",\r
-       "tiread",               CmdTiread,0,            "read a TI-type 134 kHz tag",\r
-       "tibits",               CmdTibits,0,            "get raw bits for TI-type LF tag",\r
-       "tidemod",              CmdTidemod,0,           "demod raw bits for TI-type LF tag",\r
-       "vchdemod",             CmdVchdemod,0,          "demod samples for VeriChip",\r
-       "plot",                 CmdPlot,1,              "show graph window",\r
-       "hide",                 CmdHide,1,              "hide graph window",\r
-       "losim",                CmdLosim,0,             "simulate LF tag",\r
-       "loread",               CmdLoread,0,            "read (125/134 kHz) LF ID-only tag",\r
+       "tune",                         CmdTune,0,              "measure antenna tuning",\r
+       "tiread",                       CmdTiread,0,            "read a TI-type 134 kHz tag",\r
+       "tibits",                       CmdTibits,0,            "get raw bits for TI-type LF tag",\r
+       "tidemod",                      CmdTidemod,0,           "demod raw bits for TI-type LF tag",\r
+       "vchdemod",                     CmdVchdemod,0,          "demod samples for VeriChip",\r
+       "plot",                         CmdPlot,1,              "show graph window",\r
+       "hide",                         CmdHide,1,              "hide graph window",\r
+       "losim",                        CmdLosim,0,             "simulate LF tag",\r
+       "loread",                       CmdLoread,0,            "read (125/134 kHz) LF ID-only tag",\r
        "losamples",            CmdLosamples,0,         "get raw samples for LF tag",\r
        "hisamples",            CmdHisamples,0,         "get raw samples for HF tag",\r
        "hisampless",           CmdHisampless,0,        "get signed raw samples, HF tag",\r
        "hisamplest",           CmdHi14readt,0,         "get samples HF, for testing",\r
-       "higet",                CmdHi14read_sim,0,      "get samples HF, 'analog'",\r
+       "higet",                        CmdHi14read_sim,0,      "get samples HF, 'analog'",\r
        "bitsamples",           CmdBitsamples,0,        "get raw samples as bitstring",\r
        "hexsamples",           CmdHexsamples,0,        "dump big buffer as hex bytes",\r
-       "hi15read",             CmdHi15read,0,          "read HF tag (ISO 15693)",\r
+       "hi15read",                     CmdHi15read,0,          "read HF tag (ISO 15693)",\r
        "hi15reader",           CmdHi15reader,0,        "act like an ISO15693 reader", // new command greg\r
-       "hi15sim",              CmdHi15tag,0,           "fake an ISO15693 tag", // new command greg\r
-       "hi14read",             CmdHi14read,0,          "read HF tag (ISO 14443)",\r
+       "hi15sim",                      CmdHi15tag,0,           "fake an ISO15693 tag", // new command greg\r
+       "hi14read",                     CmdHi14read,0,          "read HF tag (ISO 14443)",\r
        "sri512read",           CmdSri512read,0,        "Read contents of a SRI512 tag",\r
        "hi14areader",          CmdHi14areader,0,       "act like an ISO14443 Type A reader",   // ## New reader command\r
        "hi15demod",            CmdHi15demod,1,         "demod ISO15693 from tag",\r
        "hi14bdemod",           CmdHi14bdemod,1,        "demod ISO14443 Type B from tag",\r
-       "autocorr",             CmdAutoCorr,1,          "autocorrelation over window",\r
-       "norm",                 CmdNorm,1,              "normalize max/min to +/-500",\r
-       "dec",                  CmdDec,1,               "decimate",\r
-       "hpf",                  CmdHpf,1,               "remove DC offset from trace",\r
+       "autocorr",                     CmdAutoCorr,1,          "autocorrelation over window",\r
+       "norm",                         CmdNorm,1,              "normalize max/min to +/-500",\r
+       "dec",                          CmdDec,1,               "decimate",\r
+       "hpf",                          CmdHpf,1,               "remove DC offset from trace",\r
        "zerocrossings",        CmdZerocrossings,1,     "count time between zero-crossings",\r
-       "ltrim",                CmdLtrim,1,             "trim from left of trace",\r
-       "scale",                CmdScale,1,             "set cursor display scale",\r
+       "ltrim",                        CmdLtrim,1,             "trim from left of trace",\r
+       "scale",                        CmdScale,1,             "set cursor display scale",\r
        "flexdemod",            CmdFlexdemod,1,         "demod samples for FlexPass",\r
-       "save",                 CmdSave,1,              "save trace (from graph window)",\r
-       "load",                 CmdLoad,1,              "load trace (to graph window",\r
+       "save",                         CmdSave,1,              "save trace (from graph window)",\r
+       "load",                         CmdLoad,1,              "load trace (to graph window",\r
        "hisimlisten",          CmdHisimlisten,0,       "get HF samples as fake tag",\r
-       "hi14sim",              CmdHi14sim,0,           "fake ISO 14443 tag",\r
-       "hi14asim",             CmdHi14asim,0,          "fake ISO 14443a tag",                                  // ## Simulate 14443a tag\r
+       "hi14sim",                      CmdHi14sim,0,           "fake ISO 14443 tag",\r
+       "hi14asim",                     CmdHi14asim,0,          "fake ISO 14443a tag",                                  // ## Simulate 14443a tag\r
        "hi14snoop",            CmdHi14snoop,0,         "eavesdrop ISO 14443",\r
        "hi14asnoop",           CmdHi14asnoop,0,        "eavesdrop ISO 14443 Type A",                   // ## New snoop command\r
-       "hi14list",             CmdHi14list,0,          "list ISO 14443 history",\r
+       "hi14list",                     CmdHi14list,0,          "list ISO 14443 history",\r
        "hi14alist",            CmdHi14alist,0,         "list ISO 14443a history",                              // ## New list command\r
-       "hiddemod",             CmdHiddemod,1,          "HID Prox Card II (not optimal)",\r
+       "hiddemod",                     CmdHiddemod,1,          "HID Prox Card II (not optimal)",\r
        "hidfskdemod",          CmdHIDdemodFSK,0,       "HID FSK demodulator",\r
-    "indalademod",          CmdIndalademod,0,         "demod samples for Indala",\r
-       "askdemod",             Cmdaskdemod,1,          "Attempt to demodulate simple ASK tags",\r
+    "indalademod",             CmdIndalademod,0,         "demod samples for Indala",\r
+       "askdemod",                     Cmdaskdemod,1,          "Attempt to demodulate simple ASK tags",\r
        "hidsimtag",            CmdHIDsimTAG,0,         "HID tag simulator",\r
-       "mandemod",             Cmdmanchesterdemod,1,   "Try a Manchester demodulation on a binary stream",\r
-       "fpgaoff",              CmdFPGAOff,0,           "set FPGA off",                                                 // ## FPGA Control\r
-       "lcdreset",             CmdLcdReset,0,          "Hardware reset LCD",\r
-       "lcd",                  CmdLcd,0,               "Send command/data to LCD",\r
+       "mandemod",                     Cmdmanchesterdemod,1,   "Try a Manchester demodulation on a binary stream",\r
+       "fpgaoff",                      CmdFPGAOff,0,           "set FPGA off",                                                 // ## FPGA Control\r
+       "lcdreset",                     CmdLcdReset,0,          "Hardware reset LCD",\r
+       "lcd",                          CmdLcd,0,                       "Send command/data to LCD",\r
        "setlfdivisor",         CmdSetDivisor,0,        "Drive LF antenna at 12Mhz/(divisor+1)",\r
-       "sweeplf",              CmdSweepLF,0,           "Sweep through LF freq range and store results in buffer",\r
-       "quit",                 CmdQuit,0,              "quit program"\r
+       "sweeplf",                      CmdSweepLF,0,           "Sweep through LF freq range and store results in buffer",\r
+       "reset",                        CmdReset,0,                     "Reset the Proxmark3",\r
+       "quit",                         CmdQuit,1,                      "quit program"\r
 };\r
 \r
 \r
@@ -1933,8 +1944,10 @@ void CommandReceived(char *cmd)
        PrintToScrollback("> %s", cmd);\r
 \r
        if(strcmp(cmd, "help")==0) {\r
+               if (offline) PrintToScrollback("Operating in OFFLINE mode (no device connected)");\r
                PrintToScrollback("\r\nAvailable commands:");\r
                for(i = 0; i < sizeof(CommandTable) / sizeof(CommandTable[0]); i++) {\r
+                       if (offline && (CommandTable[i].offline==0)) continue;\r
                        char line[256];\r
                        memset(line, ' ', sizeof(line));\r
                        strcpy(line+2, CommandTable[i].name);\r
@@ -1956,6 +1969,10 @@ void CommandReceived(char *cmd)
                        while(*cmd == ' ') {\r
                                cmd++;\r
                        }\r
+                       if (offline && (CommandTable[i].offline==0)) {\r
+                               PrintToScrollback("Offline mode, cannot use this command.");\r
+                               return;\r
+                       }\r
                        (CommandTable[i].handler)(cmd);\r
                        return;\r
                }\r
index 05f05e1aa78fb24287b2fd40e60f0c4889b1130e..cc8e17f9f499bac6a1fab30c8f01fc67e85930a7 100644 (file)
@@ -33,6 +33,7 @@ void dbp(char *str, ...)
 \r
 int GraphBuffer[MAX_GRAPH_TRACE_LEN];\r
 int GraphTraceLen;\r
+int offline; // Whether the GUI operates in Offline mode.\r
 \r
 HPEN GreyPen, GreenPen, WhitePen, YellowPen;\r
 HBRUSH GreenBrush, YellowBrush;\r
index f3be604cb74661a76a11c3de0f511fa9361dec5d..7c0219e0bc002f8fa167e456c8e27d9b920815fe 100644 (file)
@@ -19,6 +19,8 @@ extern int GraphBuffer[MAX_GRAPH_TRACE_LEN];
 extern int GraphTraceLen;\r
 extern double CursorScaleFactor;\r
 extern int CommandFinished;\r
+extern int offline; // Set to 1 if the proxmark is offline\r
+\r
 \r
 // command.cpp\r
 void CommandReceived(char *cmd);\r
Impressum, Datenschutz