From b308824193342c11c88b8bad2645a5b09efcf48f Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Mon, 24 Sep 2012 11:21:48 +1200 Subject: Create netlib.utils, move cleanBin and hexdump from libmproxy.utils. --- netlib/utils.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 netlib/utils.py (limited to 'netlib/utils.py') diff --git a/netlib/utils.py b/netlib/utils.py new file mode 100644 index 00000000..ea749545 --- /dev/null +++ b/netlib/utils.py @@ -0,0 +1,36 @@ + +def cleanBin(s, fixspacing=False): + """ + Cleans binary data to make it safe to display. If fixspacing is True, + tabs, newlines and so forth will be maintained, if not, they will be + replaced with a placeholder. + """ + parts = [] + for i in s: + o = ord(i) + if (o > 31 and o < 127): + parts.append(i) + elif i in "\n\r\t" and not fixspacing: + parts.append(i) + else: + parts.append(".") + return "".join(parts) + + +def hexdump(s): + """ + Returns a set of tuples: + (offset, hex, str) + """ + parts = [] + for i in range(0, len(s), 16): + o = "%.10x"%i + part = s[i:i+16] + x = " ".join("%.2x"%ord(i) for i in part) + if len(part) < 16: + x += " " + x += " ".join(" " for i in range(16 - len(part))) + parts.append( + (o, x, cleanBin(part, True)) + ) + return parts -- cgit v1.2.3