#! /usr/bin/env python import sys def hex_chr(ch): if ((ch >= '0') & (ch <= '9')): return ord(ch) - ord('0') if ((ch >= 'a') & (ch <= 'f')): return ord(ch) - ord('a') + 0x0a if ((ch >= 'A') & (ch <= 'F')): return ord(ch) - ord('A') + 0x0A def gdb_char(str): _hex = (hex_chr(str[0]) << 4) | hex_chr(str[1]) return chr(_hex) if len(sys.argv) == 1: gdb_string = "$O5B6379675F6E65745F696E69745D20496E69743A206D62696E69742830783030303030303030290A#60" gdb_string = "$O464C4153482049443A2030312032323765203232313320323230310A#98" gdb_string = "$O68616C5F6D7063383378785F6932635F7075745F62797465732E3333370A#33" else: gdb_string = sys.argv[1] human_string = "" gdb_string = gdb_string[2:] # Strip $O while gdb_string[0] != '#': human_string += gdb_char(gdb_string[0:2]) gdb_string = gdb_string[2:] print human_string