]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdlfawid.c
CHG: this timing should be quite good. needs to be verified.
[proxmark3-svn] / client / cmdlfawid.c
index e4155319aae417c8a47d71e94c899f4c2e3a38c8..fefc6e0af1a2b6a15d921ddb81668f1ae5bdf231 100644 (file)
@@ -84,7 +84,19 @@ int usage_lf_awid_brute(void){
        return 0;
 }
 
-static boolean sendTry(uint8_t fmtlen, uint32_t fc, uint32_t cn, uint32_t delay, uint8_t *bs, size_t bs_len){
+static int sendPing(void){
+       UsbCommand ping = {CMD_PING, {1, 2, 3}};
+       SendCommand(&ping);
+       SendCommand(&ping);     
+       SendCommand(&ping);     
+       clearCommandBuffer();
+       UsbCommand resp;
+       if (WaitForResponseTimeout(CMD_ACK, &resp, 1000))
+               return 0;
+       return 1;
+}
+
+static bool sendTry(uint8_t fmtlen, uint32_t fc, uint32_t cn, uint32_t delay, uint8_t *bs, size_t bs_len){
 
        PrintAndLog("Trying FC: %u; CN: %u", fc, cn);           
        if ( !getAWIDBits(fmtlen, fc, cn, bs)) {
@@ -99,20 +111,10 @@ static boolean sendTry(uint8_t fmtlen, uint32_t fc, uint32_t cn, uint32_t delay,
        clearCommandBuffer();
        SendCommand(&c);
        msleep(delay);
+       sendPing();
        return TRUE;
 }
-static int sendPing(){
-       UsbCommand resp;
-       UsbCommand ping = {CMD_PING};
-       clearCommandBuffer();
-       SendCommand(&ping);
-       if (WaitForResponseTimeout(CMD_ACK, &resp, 1000)) {
-               PrintAndLog("aborted via keyboard!");
-               return 0;
-       }
-       PrintAndLog("Device didnt respond to ABORT");   
-       return 1;
-}
+
 
 int CmdAWIDDemodFSK(const char *Cmd) {
        int findone = 0;
@@ -356,8 +358,6 @@ int CmdAWIDBrute(const char *Cmd){
                        break;
        }
        
-       // start
-       
        PrintAndLog("Bruteforceing AWID %d Reader", fmtlen);
        PrintAndLog("Press pm3-button to abort simulation or press key");
 
@@ -366,7 +366,14 @@ int CmdAWIDBrute(const char *Cmd){
        
        for (;;){
        
-               if (ukbhit()) return sendPing();
+               if ( offline ) {
+                       printf("Device offline\n");
+                       return  2;
+               }
+               if (ukbhit()) {
+                       PrintAndLog("aborted via keyboard!");
+                       return sendPing();
+               }
                
                // Do one up
                if ( up < 0xFFFF )
@@ -374,7 +381,7 @@ int CmdAWIDBrute(const char *Cmd){
                
                // Do one down  (if cardnumber is given)
                if ( cn > 1 )
-                       if ( down > 0 )
+                       if ( down > 1 )
                                if ( !sendTry(fmtlen, fc, --down, delay, bs, size)) return 1;
        }
        return 0;
Impressum, Datenschutz