]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - winsrc/command.cpp
Added the new SRIX4K reading routine, thanks to jonor. Regression tested against...
[proxmark3-svn] / winsrc / command.cpp
index c1b3e372d4b09a456fa2b290559b182704ebb11e..456830749c6e29ced7f6f9899bfc9dc034556961 100644 (file)
@@ -107,6 +107,20 @@ static void CmdSri512read(char *str)
        c.ext1 = atoi(str);\r
        SendCommand(&c, FALSE);\r
 }\r
+
+/* New command to read the contents of a SRIX4K tag
+ * SRIX4K tags are ISO14443-B modulated memory tags,
+ * this command just dumps the contents of the memory/
+ */
+static void CmdSrix4kread(char *str)
+{
+        UsbCommand c;
+        c.cmd = CMD_READ_SRIX4K_TAG;
+        c.ext1 = atoi(str);
+        SendCommand(&c, FALSE);
+}
+
+
 \r
 // ## New command\r
 static void CmdHi14areader(char *str)\r
@@ -207,6 +221,20 @@ static void CmdHi14asnoop(char *str)
        SendCommand(&c, FALSE);\r
 }\r
 \r
+static void CmdLegicRfSim(char *str)\r
+{\r
+       UsbCommand c;\r
+       c.cmd = CMD_SIMULATE_TAG_LEGIC_RF;\r
+       SendCommand(&c, FALSE);\r
+}\r
+\r
+static void CmdLegicRfRead(char *str)\r
+{\r
+       UsbCommand c;\r
+       c.cmd = CMD_READER_LEGIC_RF;\r
+       SendCommand(&c, FALSE);\r
+}\r
+\r
 static void CmdFPGAOff(char *str)              // ## FPGA Control\r
 {\r
        UsbCommand c;\r
@@ -2272,9 +2300,11 @@ static void Cmdaskdemod(char *str) {
        int c, high = 0, low = 0;\r
 \r
        // TODO: complain if we do not give 2 arguments here !\r
+       // (AL - this doesn't make sense! we're only using one argument!!!)\r
        sscanf(str, "%i", &c);\r
 \r
        /* Detect high and lows and clock */\r
+       // (AL - clock???)\r
        for (i = 0; i < GraphTraceLen; i++)\r
        {\r
                if (GraphBuffer[i] > high)\r
@@ -2282,6 +2312,10 @@ static void Cmdaskdemod(char *str) {
                else if (GraphBuffer[i] < low)\r
                        low = GraphBuffer[i];\r
        }\r
+       if(c != 0 && c != 1) {\r
+               PrintToScrollback("Invalid argument: %s",str);\r
+               return;\r
+               }\r
 \r
        if (GraphBuffer[0] > 0) {\r
                GraphBuffer[0] = 1-c;\r
@@ -2526,7 +2560,12 @@ static void Cmdmanchesterdemod(char *str) {
 \r
        /* Detect first transition */\r
        /* Lo-Hi (arbitrary)       */\r
-       for (i = 0; i < GraphTraceLen; i++)\r
+       /* skip to the first high */\r
+       for (i= 0; i < GraphTraceLen; i++)\r
+               if(GraphBuffer[i] == high)\r
+                       break;\r
+       /* now look for the first low */\r
+       for (; i < GraphTraceLen; i++)\r
        {\r
                if (GraphBuffer[i] == low)\r
                {\r
@@ -2819,6 +2858,22 @@ static void CmdSetDivisor(char *str)
        }\r
 }\r
 \r
+static void CmdSetMux(char *str)\r
+{\r
+       UsbCommand c;\r
+       c.cmd = CMD_SET_ADC_MUX;\r
+       if(strcmp(str, "lopkd") == 0) {\r
+               c.ext1 = 0;\r
+       } else if(strcmp(str, "loraw") == 0) {\r
+               c.ext1 = 1;\r
+       } else if(strcmp(str, "hipkd") == 0) {\r
+               c.ext1 = 2;\r
+       } else if(strcmp(str, "hiraw") == 0) {\r
+               c.ext1 = 3;\r
+       }\r
+       SendCommand(&c, FALSE);\r
+}\r
+\r
 typedef void HandlerFunction(char *cmdline);\r
 \r
 /* in alphabetic order */\r
@@ -2829,7 +2884,7 @@ static struct {
        char            *docString;\r
 } CommandTable[] = {\r
        {"amp",                                 CmdAmp,                                         1, "Amplify peaks"},\r
-       {"askdemod",                    Cmdaskdemod,                            1, "<samples per bit> <0|1> -- Attempt to demodulate simple ASK tags"},\r
+       {"askdemod",                    Cmdaskdemod,                            1, "<0|1> -- Attempt to demodulate simple ASK tags"},\r
        {"autocorr",                    CmdAutoCorr,                            1, "<window length> -- Autocorrelation over window"},\r
        {"bitsamples",          CmdBitsamples,                  0, "Get raw samples as bitstring"},\r
        {"bitstream",                   Cmdbitstream,                           1, "[clock rate] -- Convert waveform into a bitstream"},\r
@@ -2873,6 +2928,8 @@ static struct {
        {"indalademod",         CmdIndalademod,                 0, "['224'] -- Demodulate samples for Indala 64 bit UID (option '224' for 224 bit)"},\r
        {"lcd",                                         CmdLcd,                                                 0, "<HEX command> <count> -- Send command/data to LCD"},\r
        {"lcdreset",                    CmdLcdReset,                            0, "Hardware reset LCD"},\r
+       {"legicrfsim",                  CmdLegicRfSim,                                                  0, "Start the LEGIC RF tag simulator"},\r
+       {"legicrfread",                 CmdLegicRfRead,                                                 0, "Start the LEGIC RF reader"},\r
        {"load",                                        CmdLoad,                                                1, "<filename> -- Load trace (to graph window"},\r
        {"locomread",                   CmdLoCommandRead,               0, "<off period> <'0' period> <'1' period> <command> ['h'] -- Modulate LF reader field to send command before read (all periods in microseconds) (option 'h' for 134)"},\r
        {"loread",                              CmdLoread,                                      0, "['h'] -- Read 125/134 kHz LF ID-only tag (option 'h' for 134)"},\r
@@ -2890,7 +2947,9 @@ static struct {
        {"save",                                        CmdSave,                                                1, "<filename> -- Save trace (from graph window)"},\r
        {"scale",                                       CmdScale,                                               1, "<int> -- Set cursor display scale"},\r
        {"setlfdivisor",        CmdSetDivisor,                  0, "<19 - 255> -- Drive LF antenna at 12Mhz/(divisor+1)"},\r
+       {"setmux",              CmdSetMux,                      0, "<loraw|hiraw|lopkd|hipkd> -- Set the ADC mux to a specific value"},\r
        {"sri512read",          CmdSri512read,                  0, "<int> -- Read contents of a SRI512 tag"},\r
+       {"srix4kread",          CmdSrix4kread,                  0, "<int> -- Read contents of a SRIX4K tag"},
        {"tidemod",                             CmdTIDemod,                                     1, "Demodulate raw bits for TI-type LF tag"},\r
        {"tiread",                              CmdTIRead,                                      0, "Read and decode a TI 134 kHz tag"},\r
        {"tiwrite",                             CmdTIWrite,                                     0, "Write new data to a r/w TI 134 kHz tag"},\r
Impressum, Datenschutz