qs-uvk5-firmware-modder/fw.py

50 wiersze
979 B
Python

2023-06-13 16:54:32 +00:00
#!/usr/bin/env python3
2023-06-13 17:36:47 +00:00
from uvk5 import UVK5, argv, eprint, Firmware
2023-06-13 16:54:32 +00:00
2023-06-13 18:16:58 +00:00
def main(cmd):
2023-06-13 17:36:47 +00:00
argc = len(argv)
2023-06-13 18:16:58 +00:00
fw = Firmware.load(argv[2])
2023-06-13 17:20:13 +00:00
eprint('Version:', fw.version)
2023-06-13 18:16:58 +00:00
if argc < 3:
return
if cmd == 'mod':
2023-06-13 18:56:24 +00:00
if argc == 3:
print('Mods:', ','.join(list(fw.get_available_mods())))
return
2023-06-13 17:20:13 +00:00
eprint('mods:', argv[3])
fw.apply_mods(argv[3].split(','))
fw.write()
2023-06-13 17:36:47 +00:00
if argc == 5:
with UVK5(argv[4]) as uvk5:
uvk5.get_version()
uvk5.send_firmware(fw)
2023-06-13 18:16:58 +00:00
if cmd == 'cmp':
fw2 = Firmware.load(argv[3])
fw.compare(fw2)
2023-06-13 19:04:22 +00:00
if cmd == 'enc':
fw.write()
if cmd == 'dec':
fw.write_raw()
2023-06-13 18:39:33 +00:00
if cmd == 'search':
fw.search(argv[3].encode())
def usage():
eprint('Usage:', argv[0], '<cmd>', '<fw.bin>', '[args...]')
exit(255)
2023-06-13 18:16:58 +00:00
2023-06-13 16:54:32 +00:00
if __name__ == '__main__':
2023-06-13 18:39:33 +00:00
if len(argv) == 1:
usage()
2023-06-13 16:54:32 +00:00
main(argv[1])