Created
July 21, 2012 21:44
-
-
Save packz/3157302 to your computer and use it in GitHub Desktop.
Little script to extract info from some TV firmwares
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
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