]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlf.c
FIX: `hf mf sim` - authentication works again.
[proxmark3-svn] / client / cmdlf.c
index f2a9bb386220e543886ef1cf56467b1cb9a95404..b3debf1c791dbb78cdbc12d72abd6beb2af811de 100644 (file)
@@ -27,11 +27,11 @@ int usage_lf_cmdread(void) {
        return 0;
 }
 int usage_lf_read(void){
-       PrintAndLog("Usage: lf read [h] [s]");
+       PrintAndLog("Usage: lf read [h] [s] [t]");
        PrintAndLog("Options:");
        PrintAndLog("       h            This help");
        PrintAndLog("       s            silent run no printout");
-       PrintAndLog("This function takes no arguments. ");
+       PrintAndLog("       t            waits for device to respond with no timeout");
        PrintAndLog("Use 'lf config' to set parameters.");
        return 0;
 }
@@ -544,20 +544,49 @@ int CmdLFSetConfig(const char *Cmd) {
 }
 
 int CmdLFRead(const char *Cmd) {
-       bool arg1 = false;
-       uint8_t cmdp =  param_getchar(Cmd, 0);
-       
-       if ( cmdp == 'h' || cmdp == 'H') return usage_lf_read();
+       bool errors = FALSE;
+       bool arg1 = FALSE;
+       bool thresholdRead = FALSE;     
+       uint8_t cmdp = 0;
+       while(param_getchar(Cmd, cmdp) != 0x00) {
+               switch(param_getchar(Cmd, cmdp)) {
+               case 'h':
+               case 'H':
+                       return usage_lf_read();
+               case 's':
+               case 'S':
+                       arg1 = TRUE;
+                       cmdp++;
+                       break;
+               case 't':
+               case 'T':
+                       thresholdRead = TRUE;
+                       cmdp++;
+                       break;
+               default:
+                       PrintAndLog("Unknown parameter '%c'", param_getchar(Cmd, cmdp));
+                       errors = 1;
+                       break;
+               }
+               if(errors) break;
+       }
        
-        //suppress print
-       if ( cmdp == 's' || cmdp == 'S') arg1 = true;
+       // No args
+       if (cmdp == 0) errors = 1;
+
+       //Validations
+       if (errors) return usage_lf_read();
 
        UsbCommand c = {CMD_ACQUIRE_RAW_ADC_SAMPLES_125K, {arg1,0,0}};
        clearCommandBuffer();
        SendCommand(&c);
-       if ( !WaitForResponseTimeout(CMD_ACK, NULL ,2500) ) {
-               PrintAndLog("command execution time out");
-               return 1;
+       if ( thresholdRead ) {
+               WaitForResponse(CMD_ACK,NULL);  
+       } else {
+               if ( !WaitForResponseTimeout(CMD_ACK, NULL ,2500) ) {
+                       PrintAndLog("command execution time out");
+                       return 1;
+               }
        }
        return 0;
 }
@@ -1197,13 +1226,12 @@ int CmdLFfind(const char *Cmd) {
        return 0;
 }
 
-static command_t CommandTable[] = 
-{
+static command_t CommandTable[] = {
        {"help",        CmdHelp,            1, "This help"},
        {"animal",      CmdLFFdx,           1, "{ Animal RFIDs... }"},
        {"awid",        CmdLFAWID,          1, "{ AWID RFIDs... }"},
        {"cotag",       CmdLFCOTAG,         1, "{ COTAG RFIDs... }"},
-       {"em4x",        CmdLFEM4X,          1, "{ EM4X RFIDs... }"},
+       {"em",          CmdLFEM4X,          1, "{ EM4X RFIDs... }"},
        {"guard",       CmdLFGuard,         1, "{ Guardall RFIDs... }"},
        {"hid",         CmdLFHID,           1, "{ HID RFIDs... }"},
        {"hitag",       CmdLFHitag,         1, "{ HITAG RFIDs... }"},
Impressum, Datenschutz