mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-02-16 04:09:10 +08:00
printdemodbuffer: add option to strip leading zeroes
This commit is contained in:
parent
1ad66c917f
commit
22ead8ca0b
1 changed files with 15 additions and 0 deletions
|
@ -39,6 +39,7 @@ static int usage_data_printdemodbuf(void) {
|
||||||
PrintAndLogEx(NORMAL, " x output in hex (omit for binary output)");
|
PrintAndLogEx(NORMAL, " x output in hex (omit for binary output)");
|
||||||
PrintAndLogEx(NORMAL, " o <offset> enter offset in # of bits");
|
PrintAndLogEx(NORMAL, " o <offset> enter offset in # of bits");
|
||||||
PrintAndLogEx(NORMAL, " l <length> enter length to print in # of bits or hex characters respectively");
|
PrintAndLogEx(NORMAL, " l <length> enter length to print in # of bits or hex characters respectively");
|
||||||
|
PrintAndLogEx(NORMAL, " s strip leading zeroes, i.e. set offset to first bit equal to one");
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
}
|
}
|
||||||
static int usage_data_manrawdecode(void) {
|
static int usage_data_manrawdecode(void) {
|
||||||
|
@ -402,6 +403,7 @@ void printDemodBuff(void) {
|
||||||
int CmdPrintDemodBuff(const char *Cmd) {
|
int CmdPrintDemodBuff(const char *Cmd) {
|
||||||
bool hexMode = false;
|
bool hexMode = false;
|
||||||
bool errors = false;
|
bool errors = false;
|
||||||
|
bool lstrip = false;
|
||||||
uint32_t offset = 0;
|
uint32_t offset = 0;
|
||||||
uint32_t length = 512;
|
uint32_t length = 512;
|
||||||
char cmdp = 0;
|
char cmdp = 0;
|
||||||
|
@ -423,6 +425,10 @@ int CmdPrintDemodBuff(const char *Cmd) {
|
||||||
if (!length) errors = true;
|
if (!length) errors = true;
|
||||||
cmdp += 2;
|
cmdp += 2;
|
||||||
break;
|
break;
|
||||||
|
case 's':
|
||||||
|
lstrip = true;
|
||||||
|
cmdp ++;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
PrintAndLogEx(WARNING, "Unknown parameter '%c'", param_getchar(Cmd, cmdp));
|
PrintAndLogEx(WARNING, "Unknown parameter '%c'", param_getchar(Cmd, cmdp));
|
||||||
errors = true;
|
errors = true;
|
||||||
|
@ -436,6 +442,15 @@ int CmdPrintDemodBuff(const char *Cmd) {
|
||||||
PrintAndLogEx(NORMAL, "Demodbuffer is empty");
|
PrintAndLogEx(NORMAL, "Demodbuffer is empty");
|
||||||
return PM3_ESOFT;
|
return PM3_ESOFT;
|
||||||
}
|
}
|
||||||
|
if (lstrip) {
|
||||||
|
char *buf = (char *)(DemodBuffer + offset);
|
||||||
|
length = (length > (DemodBufferLen - offset)) ? DemodBufferLen - offset : length;
|
||||||
|
uint32_t i;
|
||||||
|
for (i = 0; i < length; i++) {
|
||||||
|
if (buf[i] == 1) break;
|
||||||
|
}
|
||||||
|
offset += i;
|
||||||
|
}
|
||||||
length = (length > (DemodBufferLen - offset)) ? DemodBufferLen - offset : length;
|
length = (length > (DemodBufferLen - offset)) ? DemodBufferLen - offset : length;
|
||||||
|
|
||||||
if (hexMode) {
|
if (hexMode) {
|
||||||
|
|
Loading…
Reference in a new issue