|
|
1.1 ! root 1: #!/usr/bin/env python ! 2: ! 3: # This script is useful for taking the output of memdump() and ! 4: # converting it back into binary output. This can be useful, for ! 5: # example, when one wants to push that data into other tools like ! 6: # objdump or hexdump. ! 7: # ! 8: # (C) Copyright 2010 Kevin O'Connor <[email protected]> ! 9: # ! 10: # This file may be distributed under the terms of the GNU GPLv3 license. ! 11: ! 12: import sys ! 13: import struct ! 14: ! 15: def unhex(str): ! 16: return int(str, 16) ! 17: ! 18: def parseMem(filehdl): ! 19: mem = [] ! 20: for line in filehdl: ! 21: parts = line.split(':') ! 22: if len(parts) < 2: ! 23: continue ! 24: try: ! 25: vaddr = unhex(parts[0]) ! 26: parts = parts[1].split() ! 27: mem.extend([unhex(v) for v in parts]) ! 28: except ValueError: ! 29: continue ! 30: return mem ! 31: ! 32: def printUsage(): ! 33: sys.stderr.write("Usage:\n %s <file | ->\n" ! 34: % (sys.argv[0],)) ! 35: sys.exit(1) ! 36: ! 37: def main(): ! 38: if len(sys.argv) != 2: ! 39: printUsage() ! 40: filename = sys.argv[1] ! 41: if filename == '-': ! 42: filehdl = sys.stdin ! 43: else: ! 44: filehdl = open(filename, 'r') ! 45: mem = parseMem(filehdl) ! 46: for i in mem: ! 47: sys.stdout.write(struct.pack("<I", i)) ! 48: ! 49: if __name__ == '__main__': ! 50: main()
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.