|
|
1.1 ! root 1: # ! 2: # Option ROM signing utility ! 3: # ! 4: # Authors: ! 5: # Jan Kiszka <[email protected]> ! 6: # ! 7: # This work is licensed under the terms of the GNU GPL, version 2 or later. ! 8: # See the COPYING file in the top-level directory. ! 9: ! 10: import sys ! 11: import struct ! 12: ! 13: if len(sys.argv) < 3: ! 14: print('usage: signrom.py input output') ! 15: sys.exit(1) ! 16: ! 17: fin = open(sys.argv[1], 'rb') ! 18: fout = open(sys.argv[2], 'wb') ! 19: ! 20: fin.seek(2) ! 21: size = ord(fin.read(1)) * 512 - 1 ! 22: ! 23: fin.seek(0) ! 24: data = fin.read(size) ! 25: fout.write(data) ! 26: ! 27: checksum = 0 ! 28: for b in data: ! 29: # catch Python 2 vs. 3 differences ! 30: if isinstance(b, int): ! 31: checksum += b ! 32: else: ! 33: checksum += ord(b) ! 34: checksum = (256 - checksum) % 256 ! 35: ! 36: # Python 3 no longer allows chr(checksum) ! 37: fout.write(struct.pack('B', checksum)) ! 38: ! 39: fin.close() ! 40: fout.close()
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.