X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/28fdb04fd8d62e46c36f959b373d662f1a146448..463ca973e7cf1e866bb60d7cc33d38e473aa4d3d:/client/cmdlfhitag.c diff --git a/client/cmdlfhitag.c b/client/cmdlfhitag.c index c648f6a5..ede03575 100644 --- a/client/cmdlfhitag.c +++ b/client/cmdlfhitag.c @@ -12,18 +12,21 @@ #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" static int CmdHelp(const char *Cmd); +size_t nbytes(size_t nbits) { + return (nbits/8)+((nbits%8)>0); +} + int CmdLFHitagList(const char *Cmd) { uint8_t got[3000]; @@ -31,8 +34,8 @@ int CmdLFHitagList(const char *Cmd) WaitForResponse(CMD_ACK,NULL); PrintAndLog("recorded activity:"); - PrintAndLog(" ETU :rssi: who bytes"); - PrintAndLog("---------+----+----+-----------"); + PrintAndLog(" ETU :nbits: who bytes"); + PrintAndLog("---------+-----+----+-----------"); int i = 0; int prev = -1; @@ -54,7 +57,6 @@ int CmdLFHitagList(const char *Cmd) isResponse = 0; } - int metric = 0; int parityBits = *((uint32_t *)(got+i+4)); // 4 bytes of additional information... // maximum of 32 additional parity bit information @@ -63,7 +65,8 @@ int CmdLFHitagList(const char *Cmd) // at each quarter bit period we can send power level (16 levels) // or each half bit period in 256 levels. - int len = got[i+8]; + int bits = got[i+8]; + int len = nbytes(got[i+8]); if (len > 100) { break; @@ -96,27 +99,19 @@ int CmdLFHitagList(const char *Cmd) } } - char metricString[100]; - if (isResponse) { - sprintf(metricString, "%3d", metric); - } else { - strcpy(metricString, " "); - } - - PrintAndLog(" +%7d: %s: %s %s", + PrintAndLog(" +%7d: %3d: %s %s", (prev < 0 ? 0 : (timestamp - prev)), - metricString, + bits, (isResponse ? "TAG" : " "), line); if (pf) { - fprintf(pf," +%7d: %s: %s %s %s", + fprintf(pf," +%7d: %3d: %s %s\n", (prev < 0 ? 0 : (timestamp - prev)), - metricString, + bits, (isResponse ? "TAG" : " "), - line, - "\n"); + line); } prev = timestamp; @@ -138,20 +133,27 @@ 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; + int len = 0; - param_getstr(Cmd,0,filename); - + 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); return 1; } tag_mem_supplied = true; - fread(c.d.asBytes,48,1,pf); + if (fread(c.d.asBytes,48,1,pf) == 0) { + PrintAndLog("Error: File reading error"); + return 1; + } fclose(pf); } else { tag_mem_supplied = false; @@ -232,7 +234,7 @@ 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"}, @@ -244,12 +246,12 @@ static command_t CommandTableHitag[] = int CmdLFHitag(const char *Cmd) { - CmdsParse(CommandTableHitag, Cmd); + CmdsParse(CommandTable, Cmd); return 0; } int CmdHelp(const char *Cmd) { - CmdsHelp(CommandTableHitag); + CmdsHelp(CommandTable); return 0; }