X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/0b91ce03e50fd7c4a5fd3d86f1dac984d4867118..340f50a53c4cb4a5c217eadabe6347b8dae52c63:/client/cmdlfhitag.c diff --git a/client/cmdlfhitag.c b/client/cmdlfhitag.c index ad8fd33b..103f2b77 100644 --- a/client/cmdlfhitag.c +++ b/client/cmdlfhitag.c @@ -17,9 +17,9 @@ #include "cmdparser.h" #include "common.h" #include "util.h" +#include "parity.h" #include "hitag2.h" #include "hitagS.h" -#include "sleep.h" #include "cmdmain.h" static int CmdHelp(const char *Cmd); @@ -108,15 +108,9 @@ int CmdLFHitagList(const char *Cmd) char line[1000] = ""; int j; for (j = 0; j < len; j++) { - int oddparity = 0x01; - int k; - - for (k=0;k<8;k++) { - oddparity ^= (((frame[j] & 0xFF) >> k) & 0x01); - } //if((parityBits >> (len - j - 1)) & 0x01) { - if (isResponse && (oddparity != ((parityBits >> (len - j - 1)) & 0x01))) { + if (isResponse && (oddparity8(frame[j]) != ((parityBits >> (len - j - 1)) & 0x01))) { sprintf(line+(j*4), "%02x! ", frame[j]); } else { @@ -355,7 +349,9 @@ int CmdLFHitagWP(const char *Cmd) { c.arg[2]= param_get32ex(Cmd, 2, 0, 10); num_to_bytes(param_get32ex(Cmd,3,0,16),4,htd->auth.data); } break; - case 04: { //WHTSF_KEY + case 04: + case 24: + { //WHTSF_KEY num_to_bytes(param_get64ex(Cmd,1,0,16),6,htd->crypto.key); c.arg[2]= param_get32ex(Cmd, 2, 0, 10); num_to_bytes(param_get32ex(Cmd,3,0,16),4,htd->crypto.data); @@ -369,6 +365,7 @@ int CmdLFHitagWP(const char *Cmd) { PrintAndLog(" 04 (set to 0 if no authentication is needed) write page on a Hitag S tag"); PrintAndLog(" Hitag1 (1*)"); PrintAndLog(" Hitag2 (2*)"); + PrintAndLog(" 24 (set to 0 if no authentication is needed) write page on a Hitag S tag"); return 1; } break; }