bool manualPages = false;
        uint8_t startPage = 0;
        char tempStr[50];
-       char cleanASCII[4];
+       unsigned char cleanASCII[4];
 
        while(param_getchar(Cmd, cmdp) != 0x00)
        {
 
                // convert unprintable characters and line breaks to dots
                memcpy(cleanASCII, data+i*4, 4);
-
-               for (size_t clean_i = 0; clean_i < 4; clean_i++) {
-                       if (!isprint(cleanASCII[clean_i])) {
-                               cleanASCII[clean_i] = '.';
-                       }
-               }
+               clean_ascii(cleanASCII, 4);
 
                PrintAndLog("%3d/0x%02X | %s| %d | %.4s", i+startPage, i+startPage, sprint_hex(data + i * 4, 4), tmplockbit, cleanASCII);
        }
 
 // 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);