]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlf.c
CHG: some cleanup of pcf7931.c
[proxmark3-svn] / client / cmdlf.c
index db08310a0f98b15cdcc7893b76224ea5fc5b3dbf..f04feb97b0e5a2172ac1c5ffd20d2e45bb73a4c0 100644 (file)
@@ -36,39 +36,57 @@ static int CmdHelp(const char *Cmd);
 
 int usage_lf_cmdread()
 {
-       PrintAndLog("Usage: lf cmdread  <delay off>  <zero> <one> <cmdbytes> [H] ");
+       PrintAndLog("Usage: lf cmdread d <delay period> z <zero period> o <one period> c <cmdbytes> [H]");
        PrintAndLog("Options:        ");
        PrintAndLog("       h             This help");
-       PrintAndLog("       L             Low frequency (125 KHz)");
-       PrintAndLog("       H             High frequency (134 KHz)");
-       PrintAndLog("       H             delay OFF");
-       PrintAndLog("       H             time period ZERO");
-       PrintAndLog("       H             time period ONE");
+       PrintAndLog("       H             Freqency High (134 KHz), default is 'Low (125KHz)'");
+       PrintAndLog("       d <delay>     delay OFF period, (dec)");
+       PrintAndLog("       z <zero>      time period ZERO, (dec)");
+       PrintAndLog("       o <one>       time period ONE, (dec)");
+       PrintAndLog("       c <cmd>       Command bytes");
+       PrintAndLog("       ************* All periods in microseconds (ms)");
        PrintAndLog("Examples:");
-       PrintAndLog("      lf cmdread 80 100 200 11000");
-       PrintAndLog("      lf cmdread 80 100 100 11000 H");
+       PrintAndLog("      lf cmdread d 80 z 100 o 200 c 11000");
+       PrintAndLog("      lf cmdread d 80 z 100 o 100 c 11000 H");
        return 0;
 }
 
-/* send a command before reading */
+/* send a LF command before reading */
 int CmdLFCommandRead(const char *Cmd)
 {
        static char dummy[3] = {0x20,0x00,0x00};
+       UsbCommand c = {CMD_MOD_THEN_ACQUIRE_RAW_ADC_SAMPLES_125K};
        bool errors = FALSE;
-       uint8_t divisor = 0; //125khz
-       uint8_t cmdp =0;
-       while(param_getchar(Cmd, cmdp) != 0x00)
-       {
+
+       uint8_t cmdp = 0;
+       int strLength = 0;
+
+       while(param_getchar(Cmd, cmdp) != 0x00) {
                switch(param_getchar(Cmd, cmdp))
                {
                case 'h':
                        return usage_lf_cmdread();
                case 'H':
-                       divisor = 88;
+                       dummy[1]='h';
                        cmdp++;
                        break;
-               case 'a':
-                       //param_getchar(Cmd, cmdp+1) == '1';
+               case 'L':
+                       cmdp++;
+                       break;
+               case 'c':
+                       strLength = param_getstr(Cmd, cmdp+1, (char *)&c.d.asBytes);
+                       cmdp+=2;
+                       break;
+               case 'd':
+                       c.arg[0] = param_get32ex(Cmd, cmdp+1, 0, 10);
+                       cmdp+=2;
+                       break;
+               case 'z':
+                       c.arg[1] = param_get32ex(Cmd, cmdp+1, 0, 10);
+                       cmdp+=2;
+                       break;
+               case 'o':
+                       c.arg[2] = param_get32ex(Cmd, cmdp+1, 0, 10);
                        cmdp+=2;
                        break;
                default:
@@ -79,17 +97,15 @@ int CmdLFCommandRead(const char *Cmd)
                if(errors) break;
        }
        // No args
-       if(cmdp == 0) errors = 1;
+       if (cmdp == 0) errors = 1;
 
        //Validations
-       if(errors) return usage_lf_cmdread();
+       if (errors) return usage_lf_cmdread();
        
-       UsbCommand c = {CMD_MOD_THEN_ACQUIRE_RAW_ADC_SAMPLES_125K};
-       sscanf(Cmd, "%"lli" %"lli" %"lli" %s %s", &c.arg[0], &c.arg[1], &c.arg[2],(char*)(&c.d.asBytes),(char*)(&dummy+1));
-       // in case they specified 'h'
-       strcpy((char *)&c.d.asBytes + strlen((char *)c.d.asBytes), dummy);
+       // in case they specified 'H'
+       // added to the end..  
+       strcpy((char *)&c.d.asBytes + strLength, dummy);
 
-       PrintAndLog("ICE: %d %s -- %s", strlen((char *)c.d.asBytes) ,dummy, c.d.asBytes);
        clearCommandBuffer();
        SendCommand(&c);
        return 0;
@@ -1204,15 +1220,15 @@ int CmdLFfind(const char *Cmd)
 static command_t CommandTable[] = 
 {
   {"help",        CmdHelp,            1, "This help"},
+       {"awid",        CmdLFAWID,          1, "{ AWID RFIDs... }"},
   {"em4x",        CmdLFEM4X,          1, "{ EM4X RFIDs... }"},
-  {"awid",             CmdLFAWID,                  1, "{ AWID RFIDs... }"},
   {"hid",         CmdLFHID,           1, "{ HID RFIDs... }"},
   {"hitag",       CmdLFHitag,         1, "{ HITAG RFIDs... }"},
   {"io",                 CmdLFIO,                1, "{ IOPROX RFIDs... }"},
   {"pcf7931",     CmdLFPCF7931,       1, "{ PCF7931 RFIDs... }"},
   {"ti",          CmdLFTI,            1, "{ TI RFIDs... }"},
   {"t55xx",       CmdLFT55XX,         1, "{ T55X7 RFIDs... }"},
-{"viking",      CmdLFViking,        1, "{ Viking RFIDs... }"},
+  {"viking",      CmdLFViking,        1, "{ Viking RFIDs... }"},
   {"config",      CmdLFSetConfig,     0, "Set config for LF sampling, bit/sample, decimation, frequency"},
  
   {"cmdread",     CmdLFCommandRead,   0, "<off period> <'0' period> <'1' period> <command> ['h' 134] \n\t\t-- Modulate LF reader field to send command before read (all periods in microseconds)"},
@@ -1220,9 +1236,9 @@ static command_t CommandTable[] =
   {"indalademod", CmdIndalaDemod,     1, "['224'] -- Demodulate samples for Indala 64 bit UID (option '224' for 224 bit)"},
   {"indalaclone", CmdIndalaClone,     0, "<UID> ['l']-- Clone Indala to T55x7 (tag must be in antenna)(UID in HEX)(option 'l' for 224 UID"},
   {"read",        CmdLFRead,          0, "['s' silent] Read 125/134 kHz LF ID-only tag. Do 'lf read h' for help"},
-  {"search",      CmdLFfind,          1, "[offline] ['u'] Read and Search for valid known tag (in offline mode it you can load first then search) \n\t\t- 'u' to search for unknown tags"},
+  {"search",      CmdLFfind,          1, "[offline] ['u'] Read and Search for valid known tag (in offline mode it you can load first then search) \n\t\t-- 'u' to search for unknown tags"},
   {"sim",         CmdLFSim,           0, "[GAP] -- Simulate LF tag from buffer with optional GAP (in microseconds)"},
-  {"simask",      CmdLFaskSim,        0, "[clock] [invert <1|0>] [manchester/raw <'m'|'r'>] [msg separator 's'] [d <hexdata>] \n\t\t-- Simulate LF ASK tag from demodbuffer or input"},
+  {"simask",      CmdLFaskSim,        0, "[clock] [invert <1|0>] [biphase/manchester/raw <'b'|'m'|'r'>] [msg separator 's'] [d <hexdata>] \n\t\t-- Simulate LF ASK tag from demodbuffer or input"},
   {"simfsk",      CmdLFfskSim,        0, "[c <clock>] [i] [H <fcHigh>] [L <fcLow>] [d <hexdata>] \n\t\t-- Simulate LF FSK tag from demodbuffer or input"},
   {"simpsk",      CmdLFpskSim,        0, "[1|2|3] [c <clock>] [i] [r <carrier>] [d <raw hex to sim>] \n\t\t-- Simulate LF PSK tag from demodbuffer or input"},
   {"simbidir",    CmdLFSimBidir,      0, "Simulate LF tag (with bidirectional data transmission between reader and tag)"},
Impressum, Datenschutz