]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
Merge pull request #221 from jamchamb/clean-mfu-dump
authorpwpiwi <pwpiwi@users.noreply.github.com>
Sat, 4 Mar 2017 11:48:37 +0000 (12:48 +0100)
committerGitHub <noreply@github.com>
Sat, 4 Mar 2017 11:48:37 +0000 (12:48 +0100)
Clean mfu dump output

client/cmdhfmfu.c
client/util.c
client/util.h

index 25a073d34440b2de98b3c56d67597dbc2df14111..b7cf0fcd6a00e5bec876a00a932839a1e711f124 100644 (file)
@@ -7,6 +7,7 @@
 //-----------------------------------------------------------------------------
 // High frequency MIFARE ULTRALIGHT (C) commands
 //-----------------------------------------------------------------------------
+#include <ctype.h>
 #include "loclass/des.h"
 #include "cmdhfmfu.h"
 #include "cmdhfmf.h"
@@ -1230,6 +1231,7 @@ int CmdHF14AMfUDump(const char *Cmd){
        bool manualPages = false;
        uint8_t startPage = 0;
        char tempStr[50];
+       unsigned char cleanASCII[4];
 
        while(param_getchar(Cmd, cmdp) != 0x00)
        {
@@ -1372,7 +1374,7 @@ int CmdHF14AMfUDump(const char *Cmd){
        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){
@@ -1419,7 +1421,12 @@ int CmdHF14AMfUDump(const char *Cmd){
                        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("---------------------------------");
 
index 374ae397a3415d9b8c916cc3573357c36193e89c..e80f5cc9d59efeb7fe1cabee909db4bcb49ed1d5 100644 (file)
@@ -8,6 +8,7 @@
 // utilities
 //-----------------------------------------------------------------------------
 
+#include <ctype.h>
 #include "util.h"
 #define MAX_BIN_BREAK_LENGTH   (3072+384+1)
 
@@ -581,3 +582,12 @@ void rol(uint8_t *data, const size_t len){
     }
     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] = '.';
+  }
+}
index 8c0ed950db3f38df1600aad2ca281fa3ad876148..fde065400c7c2c3a885a1099cd1c6ccbc20cd1b7 100644 (file)
@@ -76,3 +76,5 @@ void xor(unsigned char *dst, unsigned char *src, size_t len);
 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);
Impressum, Datenschutz