From 5e963a07467526c2a3d0690ff775124895ef0777 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 28 Mar 2021 18:46:27 +0200 Subject: [PATCH] data hex2bin - talk about brain melt --- client/src/cmddata.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index d514b53ce..3dd82f0d2 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -2421,9 +2421,30 @@ static int Cmdhex2bin(const char *Cmd) { PrintAndLogEx(FAILED, "Error parsing bytes"); return PM3_EINVARG; } + + for (int i = 0; i < dlen; i++) { + char x = data[i]; + if (isxdigit(x) == false) { + PrintAndLogEx(ERR, "Non hex digit found"); + return PM3_EINVARG; + } + } + PrintAndLogEx(SUCCESS, "" NOLF); for (int i = 0; i < dlen; i++) { char x = data[i]; + + // capitalize + if (x >= 'a' && x <= 'f') + x -= 32; + // convert to numeric value + if (x >= '0' && x <= '9') + x -= '0'; + else if (x >= 'A' && x <= 'F') + x -= 'A' - 10; + else + continue; + for (int j = 0 ; j < 4 ; ++j) { PrintAndLogEx(NORMAL, "%d" NOLF, (x >> (3 - j)) & 1); }