Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 11th, 2012  |  syntax: None  |  size: 1.10 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. import struct
  2.  
  3. def unpack(data, offset, length, type):
  4.     return struct.unpack(type, data[offset - 0x08000000 : offset + length - 0x08000000])
  5.  
  6.  
  7. f = file("nano4sdram2.bin", "rb")
  8. data = f.read()
  9. f.close()
  10.  
  11. head = 0x09FA1218
  12.  
  13. ptr = unpack(data, head, 4, "<I")[0]
  14.  
  15. while ptr != head:
  16.     guid = unpack(data, ptr + 8, 16, "<IHHQ")
  17.     dest = unpack(data, ptr + 24, 4, "<I")[0]
  18.     dest = unpack(data, dest + 12, 4, "<I")[0]
  19.     name = data.find(".stripped", dest - 0x08000000, dest - 0x08000000 + 0x20000)
  20.     next = data.find(".data", dest - 0x08000000, dest - 0x08000000 + 0x20000)
  21.     if name == -1 or name > next: name = "UNKNOWN"
  22.     else: name = data[data.rfind("/", name - 64, name) + 1 : name]
  23.     hdr = data.rfind(".data", dest - 0x08000000 - 0x20000, dest - 0x08000000)
  24.     prev = data.rfind(".stripped", dest - 0x08000000 - 0x20000, dest - 0x08000000)
  25.     if hdr == -1 or hdr < prev: base = 0
  26.     else: base = 0x08000000 + hdr - 0x120
  27.     print("%08X: %08X-%04X-%04X-%016X: %s (0x%08X)" % (ptr, guid[0], guid[1], guid[2], guid[3], name, dest - base))
  28.     ptr = unpack(data, ptr, 4, "<I")[0]