Skip to content

Instantly share code, notes, and snippets.

@packz
Created July 21, 2012 21:44
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save packz/3157302 to your computer and use it in GitHub Desktop.
Save packz/3157302 to your computer and use it in GitHub Desktop.
Little script to extract info from some TV firmwares
"""
Extract information about some TV firmware
http://neophob.com/2010/01/root-my-tv-hack-philips-pfl9703/
$ python firm.py firmware.upd
magic1: 2SWU
magic2: 3TXV
header size: 760
data size: 36144376
crc: 1865288756
description: SecureOND_M8R728_M8.728.upg
signature: 7432c7c5fcbbf44b552f226a0cae07dc3970dddc0ceb84d38f9d305b542791bbae3722703c117b54191deaf6ab0dbd08d66c07f58d0589fff4b38fa3d45b103c898f0fe3d4720edc64bd79cc2d2a2a7ef35a98d235586f28f1721c062dc63c1e6fbd8563cd8cbb51edfc2086dcc0004684e1b820452253fbbdc888722da99e7b10c66535f0ad5a9742869da1ee6b71d770b9511f2b14deddffac1b5c1dbedc70
release: M 8.728
"""
import struct
import sys
if __name__ == "__main__":
if len(sys.argv) < 2:
print >> sys.stderr, "usage: %s <firmware file>" % sys.argv[0]
sys.exit(1)
with open(sys.argv[1]) as f:
data = f.read()
magic1 = data[0:4]
magic2 = data[4:8]
offset = 8
header_size = struct.unpack("I", data[offset:offset + 4])[0]
offset += 4
data_size = struct.unpack("I", data[offset:offset + 4])[0]
offset += 4
crc = struct.unpack("I", data[offset:offset + 4])[0]
offset += 16
description = data[offset:offset + 512]
offset += 512
signature = "".join(["%02x" % ord(x) for x in data[offset:offset + 160]])
offset += 160
release_string = data[offset:offset + 28]
print """
magic1: %s
magic2: %s
header size: %d
data size: %d
crc: %d
description: %s
signature: %s
release: %s
""" % (magic1, magic2, header_size, data_size, crc, description, signature, release_string,)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment