//-----------------------------------------------------------------------------
// High frequency MIFARE ULTRALIGHT (C) commands
//-----------------------------------------------------------------------------
+#include <ctype.h>
#include "loclass/des.h"
#include "cmdhfmfu.h"
#include "cmdhfmf.h"
bool manualPages = false;
uint8_t startPage = 0;
char tempStr[50];
+ unsigned char cleanASCII[4];
while(param_getchar(Cmd, cmdp) != 0x00)
{
PrintAndLog("---------------------------------");
for (i = 0; i < Pages; ++i) {
if ( i < 3 ) {
- PrintAndLog("%02d/0x%02X | %s| | ", i+startPage, i+startPage, sprint_hex(data + i * 4, 4));
+ PrintAndLog("%3d/0x%02X | %s| | ", i+startPage, i+startPage, sprint_hex(data + i * 4, 4));
continue;
}
switch(i){
case 43: tmplockbit = bit2[9]; break; //auth1
default: break;
}
- PrintAndLog("%02d/0x%02X | %s| %d | %.4s", i+startPage, i+startPage, sprint_hex(data + i * 4, 4), tmplockbit, data+i*4);
+
+ // convert unprintable characters and line breaks to dots
+ memcpy(cleanASCII, data+i*4, 4);
+ clean_ascii(cleanASCII, 4);
+
+ PrintAndLog("%3d/0x%02X | %s| %d | %.4s", i+startPage, i+startPage, sprint_hex(data + i * 4, 4), tmplockbit, cleanASCII);
}
PrintAndLog("---------------------------------");
// utilities
//-----------------------------------------------------------------------------
+#include <ctype.h>
#include "util.h"
#define MAX_BIN_BREAK_LENGTH (3072+384+1)
}
data[len-1] = first;
}
+
+
+// Replace unprintable characters with a dot in char buffer
+void clean_ascii(unsigned char *buf, size_t len) {
+ for (size_t i = 0; i < len; i++) {
+ if (!isprint(buf[i]))
+ buf[i] = '.';
+ }
+}
int32_t le24toh(uint8_t data[3]);
uint32_t le32toh (uint8_t *data);
void rol(uint8_t *data, const size_t len);
+
+void clean_ascii(unsigned char *buf, size_t len);