X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/28fdb04fd8d62e46c36f959b373d662f1a146448..47cbb2d41851e680c84b3a7dd0465f7f7960a9ec:/client/cmdlfhitag.c diff --git a/client/cmdlfhitag.c b/client/cmdlfhitag.c index c648f6a5..331f2c87 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; @@ -151,7 +146,10 @@ int CmdLFHitagSim(const char *Cmd) { 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 +230,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 +242,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; }