mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-21 13:53:55 -07:00
added a new command -data bmap- it breaks down a hex value in rows of bits according to a supplied template
This commit is contained in:
parent
2fed756dd9
commit
9a9d2cf621
2 changed files with 65 additions and 0 deletions
|
@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file.
|
||||||
This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log...
|
This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log...
|
||||||
|
|
||||||
## [unreleased][unreleased]
|
## [unreleased][unreleased]
|
||||||
|
- Added new command `data bmap` - breaks down a hexvalue to a binary template (@iceman1001)
|
||||||
- Changed aid_desfire.json - added entreis from the Metrodroid project (@iceman1001)
|
- Changed aid_desfire.json - added entreis from the Metrodroid project (@iceman1001)
|
||||||
- Changed mad.json - added entries from the Metrodroid project (@iceman1001)
|
- Changed mad.json - added entries from the Metrodroid project (@iceman1001)
|
||||||
- Changed `hf iclass dump` - now allow no save of dumped data (@iceman1001)
|
- Changed `hf iclass dump` - now allow no save of dumped data (@iceman1001)
|
||||||
|
|
|
@ -3451,6 +3451,69 @@ static int CmdAtrLookup(const char *Cmd) {
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int CmdBinaryMap(const char *Cmd) {
|
||||||
|
CLIParserContext *ctx;
|
||||||
|
CLIParserInit(&ctx, "data bmap",
|
||||||
|
"Breaks down a hex value to binary according a template\n"
|
||||||
|
" data bmap -d 16 -m 4,4\n"
|
||||||
|
"This will give two rows each with four bits",
|
||||||
|
"data bmap -d 3B -m 2,5,1\n"
|
||||||
|
);
|
||||||
|
|
||||||
|
void *argtable[] = {
|
||||||
|
arg_param_begin,
|
||||||
|
arg_str0("d", NULL, "<hex>", "hex string"),
|
||||||
|
arg_str0("m", NULL, "<str>", "binary template"),
|
||||||
|
arg_param_end
|
||||||
|
};
|
||||||
|
CLIExecWithReturn(ctx, Cmd, argtable, false);
|
||||||
|
|
||||||
|
int hlen = 5;
|
||||||
|
uint8_t hex[5 + 1];
|
||||||
|
CLIGetStrWithReturn(ctx, 1,hex, &hlen);
|
||||||
|
|
||||||
|
int tlen = 40;
|
||||||
|
uint8_t template[40 + 1];
|
||||||
|
CLIGetStrWithReturn(ctx, 2, template, &tlen);
|
||||||
|
CLIParserFree(ctx);
|
||||||
|
|
||||||
|
char bits[(8 * 4) + 1] = {0};
|
||||||
|
hextobinstring_n(bits, hex, hlen);
|
||||||
|
|
||||||
|
int x = 0;
|
||||||
|
char *token = strtok(template, ",");
|
||||||
|
|
||||||
|
PrintAndLogEx(INFO, "---+---------------------------");
|
||||||
|
PrintAndLogEx(INFO, " | b0 b1 b2 b3 b4 b5 b6 b7");
|
||||||
|
PrintAndLogEx(INFO, "---+---------------------------");
|
||||||
|
|
||||||
|
uint8_t i = 0;
|
||||||
|
uint8_t cnt = 1;
|
||||||
|
while (token != NULL) {
|
||||||
|
sscanf(token, "%d", &x);
|
||||||
|
|
||||||
|
if (i) {
|
||||||
|
PrintAndLogEx(INFO, " %d | %*.s" NOLF, cnt, i * 3, " ");
|
||||||
|
} else {
|
||||||
|
PrintAndLogEx(INFO, " %d | " NOLF, cnt);
|
||||||
|
}
|
||||||
|
|
||||||
|
// incease with previous offset
|
||||||
|
x += i;
|
||||||
|
|
||||||
|
for (;i < x; i++) {
|
||||||
|
PrintAndLogEx(NORMAL, "%c " NOLF, bits[7 - i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
PrintAndLogEx(NORMAL, "");
|
||||||
|
token = strtok(NULL, ",");
|
||||||
|
cnt++;
|
||||||
|
}
|
||||||
|
|
||||||
|
PrintAndLogEx(NORMAL, "");
|
||||||
|
return PM3_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
static command_t CommandTable[] = {
|
static command_t CommandTable[] = {
|
||||||
{"help", CmdHelp, AlwaysAvailable, "This help"},
|
{"help", CmdHelp, AlwaysAvailable, "This help"},
|
||||||
|
|
||||||
|
@ -3493,6 +3556,7 @@ static command_t CommandTable[] = {
|
||||||
{"atr", CmdAtrLookup, AlwaysAvailable, "ATR lookup"},
|
{"atr", CmdAtrLookup, AlwaysAvailable, "ATR lookup"},
|
||||||
{"bin2hex", Cmdbin2hex, AlwaysAvailable, "Converts binary to hexadecimal"},
|
{"bin2hex", Cmdbin2hex, AlwaysAvailable, "Converts binary to hexadecimal"},
|
||||||
{"bitsamples", CmdBitsamples, IfPm3Present, "Get raw samples as bitstring"},
|
{"bitsamples", CmdBitsamples, IfPm3Present, "Get raw samples as bitstring"},
|
||||||
|
{"bmap", CmdBinaryMap, AlwaysAvailable, "Convert hex value according a binary template"},
|
||||||
{"clear", CmdBuffClear, AlwaysAvailable, "Clears bigbuf on deviceside and graph window"},
|
{"clear", CmdBuffClear, AlwaysAvailable, "Clears bigbuf on deviceside and graph window"},
|
||||||
{"diff", CmdDiff, AlwaysAvailable, "Diff of input files"},
|
{"diff", CmdDiff, AlwaysAvailable, "Diff of input files"},
|
||||||
{"hexsamples", CmdHexsamples, IfPm3Present, "Dump big buffer as hex bytes"},
|
{"hexsamples", CmdHexsamples, IfPm3Present, "Dump big buffer as hex bytes"},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue