]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlfawid.c
CHG: textual fixes in help text
[proxmark3-svn] / client / cmdlfawid.c
index cd494dbbd41e971c9cace20f520094680fd092a4..43f54a6ffd5169d331b0f59754237528388d1375 100644 (file)
@@ -78,15 +78,16 @@ int usage_lf_awid_brute(void){
        PrintAndLog("Enables bruteforce of AWID reader with specified facility-code.");
        PrintAndLog("This is a incremental attack against reader.");
        PrintAndLog("");
-       PrintAndLog("Usage:  lf awid brute [h] <format> <facility-code>");
+       PrintAndLog("Usage:  lf awid brute [h] <format> <facility-code> <delay>");
        PrintAndLog("Options :");
        PrintAndLog("                h :  This help");
        PrintAndLog("         <format> :  format length 26|50");
        PrintAndLog("  <facility-code> :  8|16bit value facility code");
+       PrintAndLog("          <delay> :  delay betweens attempts in ms. Default 1000ms");
        PrintAndLog("");
        PrintAndLog("Samples");
        PrintAndLog("       lf awid brute 26 224");
-       PrintAndLog("       lf awid brute 50 2001");
+       PrintAndLog("       lf awid brute 50 2001 2000");
        return 0;
 }
 
@@ -268,7 +269,7 @@ int CmdAWIDClone(const char *Cmd) {
 
 int CmdAWIDBrute(const char *Cmd){
        
-       uint32_t fc = 0x00;
+       uint32_t fc = 0, delay = 1000;
        uint8_t fmtlen = 0;
        uint8_t bits[96];
        uint8_t *bs = bits;
@@ -276,12 +277,15 @@ int CmdAWIDBrute(const char *Cmd){
        memset(bs, 0x00, size);
 
        char cmdp = param_getchar(Cmd, 0);
-       if (strlen(Cmd) > 4 || strlen(Cmd) == 0 || cmdp == 'h' || cmdp == 'H') return usage_lf_awid_brute();
+       if (strlen(Cmd) == 0 || cmdp == 'h' || cmdp == 'H') return usage_lf_awid_brute();
        
        fmtlen = param_get8(Cmd, 0);
        fc =  param_get32ex(Cmd, 1, 0, 10);
        if ( !fc ) return usage_lf_awid_brute();
        
+       // delay between attemps,  defaults to 1000ms. 
+       delay = param_get32ex(Cmd, 2, 1000, 10);
+       
        switch(fmtlen) {
                case 50:
                        if ((fc & 0xFFFF) != fc) {
@@ -298,32 +302,37 @@ int CmdAWIDBrute(const char *Cmd){
        }
        
        PrintAndLog("Bruteforceing AWID %d Reader", fmtlen);
-       PrintAndLog("Press pm3-button to abort simulation or run another command");
+       PrintAndLog("Press pm3-button to abort simulation or press key");
 
        uint64_t arg1 = (10<<8) + 8; // fcHigh = 10, fcLow = 8
        uint64_t arg2 = 50;              // clk RF/50 invert=0
        UsbCommand c = {CMD_FSK_SIM_TAG, {arg1, arg2, size}};  
 
        for ( uint16_t cn = 1; cn < 0xFFFF; ++cn){
+
                if (ukbhit()) {
-                       PrintAndLog("aborted via keyboard!");
-                       c.cmd = CMD_PING;
-                       c.arg[0] = 0x00;
-                       c.arg[1] = 0x00;
-                       c.arg[2] = 0x00;
+                       UsbCommand resp;
+                       UsbCommand ping = {CMD_PING};
                        clearCommandBuffer();
-                       SendCommand(&c);
+                       SendCommand(&ping);
+                       if (WaitForResponseTimeout(CMD_ACK, &resp, 1000)) {
+                               PrintAndLog("aborted via keyboard!");
+                               return 0;
+                       }
+                       PrintAndLog("Device didnt respond to ABORT");
                        return 1;
                }
-                       
-               (void)getAWIDBits(fmtlen, fc, cn, bs);
+
+               PrintAndLog("Trying FC: %u; CN: %u", fc, cn);           
+               if ( !getAWIDBits(fmtlen, fc, cn, bs)) {
+                       PrintAndLog("Error with tag bitstream generation.");
+                       return 1;
+               }       
                memcpy(c.d.asBytes, bs, size);
                clearCommandBuffer();
                SendCommand(&c);
                
-               PrintAndLog("Trying FC: %u; CN: %u", fc, cn);
-               // pause
-               sleep(1);
+               msleep(delay);
        }
        return 0;
 }
@@ -331,9 +340,9 @@ int CmdAWIDBrute(const char *Cmd){
 static command_t CommandTable[] = {
        {"help",      CmdHelp,         1, "This help"},
        {"fskdemod",  CmdAWIDDemodFSK, 0, "['1'] Realtime AWID FSK demodulator (option '1' for one tag only)"},
-       {"sim",       CmdAWIDSim,      0, "<Facility-Code> <Card Number> -- AWID tag simulator"},
-       {"clone",     CmdAWIDClone,    0, "<Facility-Code> <Card Number> <Q5> -- Clone AWID to T55x7"},
-       {"brute",         CmdAWIDBrute,    0, "<Facility-Code> -- bruteforce card number"},
+       {"sim",       CmdAWIDSim,      0, "<facility-code> <card number> -- AWID tag simulator"},
+       {"clone",     CmdAWIDClone,    0, "<facility-code> <card number> <Q5> -- Clone AWID to T55x7"},
+       {"brute",         CmdAWIDBrute,    0, "<format> <facility-code> <delay> -- bruteforce card number given a FC"},
        {NULL, NULL, 0, NULL}
 };
 
Impressum, Datenschutz