X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/28fdb04fd8d62e46c36f959b373d662f1a146448..c3c18b06323b48c4986e93cd997f750da194ef0e:/client/cmdlfhitag.c diff --git a/client/cmdlfhitag.c b/client/cmdlfhitag.c index c648f6a5..af61bd36 100644 --- a/client/cmdlfhitag.c +++ b/client/cmdlfhitag.c @@ -24,6 +24,10 @@ 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 +35,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 +58,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 +66,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 +100,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 +147,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;