X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/759c16b31f8dcec37458dd6a5973ce0cfce58015..a501c82b196b614295a6e3bf7481da84affb0d8e:/client/cmdlfhitag.c diff --git a/client/cmdlfhitag.c b/client/cmdlfhitag.c index af61bd36..6d1cb87d 100644 --- a/client/cmdlfhitag.c +++ b/client/cmdlfhitag.c @@ -12,13 +12,12 @@ #include #include #include "data.h" -//#include "proxusb.h" #include "proxmark3.h" #include "ui.h" #include "cmdparser.h" -#include "common.h" +#include "../include/common.h" #include "util.h" -#include "hitag2.h" +#include "../include/hitag2.h" #include "sleep.h" #include "cmdmain.h" @@ -30,7 +29,7 @@ size_t nbytes(size_t nbits) { int CmdLFHitagList(const char *Cmd) { - uint8_t got[3000]; + uint8_t got[TRACE_BUFFER_SIZE]; GetFromBigBuf(got,sizeof(got),0); WaitForResponse(CMD_ACK,NULL); @@ -40,14 +39,25 @@ int CmdLFHitagList(const char *Cmd) int i = 0; int prev = -1; + int len = strlen(Cmd); - char filename[256]; + char filename[FILE_PATH_SIZE] = { 0x00 }; FILE* pf = NULL; + + if (len > FILE_PATH_SIZE) + len = FILE_PATH_SIZE; + memcpy(filename, Cmd, len); + + if (strlen(filename) > 0) { + if ((pf = fopen(filename,"wb")) == NULL) { + PrintAndLog("Error: Could not open file [%s]",filename); + return 1; + } + } for (;;) { - if(i >= 1900) { - break; - } + + if(i >= TRACE_BUFFER_SIZE) { break; } bool isResponse; int timestamp = *((uint32_t *)(got+i)); @@ -72,9 +82,7 @@ int CmdLFHitagList(const char *Cmd) if (len > 100) { break; } - if (i + len >= 1900) { - break; - } + if (i + len >= TRACE_BUFFER_SIZE) { break;} uint8_t *frame = (got+i+9); @@ -120,8 +128,8 @@ int CmdLFHitagList(const char *Cmd) } if (pf) { - PrintAndLog("Recorded activity succesfully written to file: %s", filename); fclose(pf); + PrintAndLog("Recorded activity succesfully written to file: %s", filename); } return 0; @@ -134,13 +142,15 @@ int CmdLFHitagSnoop(const char *Cmd) { } int CmdLFHitagSim(const char *Cmd) { - UsbCommand c = {CMD_SIMULATE_HITAG}; - char filename[256] = { 0x00 }; + + UsbCommand c = {CMD_SIMULATE_HITAG}; + char filename[FILE_PATH_SIZE] = { 0x00 }; FILE* pf; bool tag_mem_supplied; - - param_getstr(Cmd,0,filename); - + int len = strlen(Cmd); + if (len > FILE_PATH_SIZE) len = FILE_PATH_SIZE; + memcpy(filename, Cmd, len); + if (strlen(filename) > 0) { if ((pf = fopen(filename,"rb+")) == NULL) { PrintAndLog("Error: Could not open file [%s]",filename); @@ -148,9 +158,9 @@ int CmdLFHitagSim(const char *Cmd) { } tag_mem_supplied = true; if (fread(c.d.asBytes,48,1,pf) == 0) { - PrintAndLog("Error: File reading error"); + PrintAndLog("Error: File reading error"); return 1; - } + } fclose(pf); } else { tag_mem_supplied = false; @@ -231,24 +241,24 @@ int CmdLFHitagReader(const char *Cmd) { return 0; } -static command_t CommandTableHitag[] = +static command_t CommandTable[] = { {"help", CmdHelp, 1, "This help"}, - {"list", CmdLFHitagList, 1, "List Hitag trace history"}, + {"list", CmdLFHitagList, 1, " List Hitag trace history"}, {"reader", CmdLFHitagReader, 1, "Act like a Hitag Reader"}, - {"sim", CmdLFHitagSim, 1, "Simulate Hitag transponder"}, + {"sim", CmdLFHitagSim, 1, " Simulate Hitag transponder"}, {"snoop", CmdLFHitagSnoop, 1, "Eavesdrop Hitag communication"}, - {NULL, NULL, 0, NULL} + {NULL, NULL, 0, NULL} }; int CmdLFHitag(const char *Cmd) { - CmdsParse(CommandTableHitag, Cmd); + CmdsParse(CommandTable, Cmd); return 0; } int CmdHelp(const char *Cmd) { - CmdsHelp(CommandTableHitag); + CmdsHelp(CommandTable); return 0; }