X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/5acd09bdfb9b3777585f3875190e942e259a98f0..02d352fea75385d80b49a7ab8703692ae307f073:/client/cmdhfepa.c diff --git a/client/cmdhfepa.c b/client/cmdhfepa.c index 5fcd1714..afcdb0fa 100644 --- a/client/cmdhfepa.c +++ b/client/cmdhfepa.c @@ -9,12 +9,13 @@ //----------------------------------------------------------------------------- #include "util.h" -#include "proxusb.h" +//#include "proxusb.h" +#include "proxmark3.h" #include "ui.h" #include "cmdparser.h" -#include "common.h" +#include "../include/common.h" #include "cmdmain.h" - +#include "sleep.h" #include "cmdhfepa.h" static int CmdHelp(const char *Cmd); @@ -23,39 +24,43 @@ static int CmdHelp(const char *Cmd); int CmdHFEPACollectPACENonces(const char *Cmd) { // requested nonce size - uint8_t m = 0; + unsigned int m = 0; // requested number of Nonces unsigned int n = 0; + // delay between requests + unsigned int d = 0; - sscanf(Cmd, "%hhu %u", &m, &n); + sscanf(Cmd, "%u %u %u", &m, &n, &d); // values are expected to be > 0 m = m > 0 ? m : 1; n = n > 0 ? n : 1; - PrintAndLog("Collecting %u %hhu-byte nonces", n, m); + PrintAndLog("Collecting %u %"hhu"-byte nonces", n, m); PrintAndLog("Start: %u", time(NULL)); // repeat n times for (unsigned int i = 0; i < n; i++) { // execute PACE UsbCommand c = {CMD_EPA_PACE_COLLECT_NONCE, {(int)m, 0, 0}}; SendCommand(&c); - UsbCommand *resp = WaitForResponse(CMD_ACK); + UsbCommand resp; + + WaitForResponse(CMD_ACK,&resp); // check if command failed - if (resp->arg[0] != 0) { - PrintAndLog("Error in step %d, Return code: %d", - resp->arg[0], - (int)resp->arg[1]); + if (resp.arg[0] != 0) { + PrintAndLog("Error in step %d, Return code: %d",resp.arg[0],(int)resp.arg[1]); } else { - size_t nonce_length = resp->arg[1]; + size_t nonce_length = resp.arg[1]; char *nonce = (char *) malloc(2 * nonce_length + 1); for(int j = 0; j < nonce_length; j++) { - snprintf(nonce + (2 * j), 3, "%02X", resp->d.asBytes[j]); + sprintf(nonce + (2 * j), "%02X", resp.d.asBytes[j]); } // print nonce - PrintAndLog("Length: %d, Nonce: %s", - resp->arg[1], nonce); + PrintAndLog("Length: %d, Nonce: %s", nonce_length, nonce); + } + if (i < n - 1) { + sleep(d); } } PrintAndLog("End: %u", time(NULL)); @@ -68,7 +73,8 @@ int CmdHFEPACollectPACENonces(const char *Cmd) static const command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, - {"cnonces", CmdHFEPACollectPACENonces, 0, " Acquire n>0 encrypted PACE nonces of size m>0"}, + {"cnonces", CmdHFEPACollectPACENonces, 0, + " Acquire n>0 encrypted PACE nonces of size m>0 with d sec pauses"}, {NULL, NULL, 0, NULL} }; @@ -81,7 +87,7 @@ int CmdHelp(const char *Cmd) int CmdHFEPA(const char *Cmd) { // flush - while (WaitForResponseTimeout(CMD_ACK, 500) != NULL) ; + WaitForResponseTimeout(CMD_ACK,NULL,100); // parse CmdsParse(CommandTable, Cmd);