From ef337508c551c955761b2bc3bfd109d382ba68c1 Mon Sep 17 00:00:00 2001 From: Mikhail Yudin Date: Tue, 16 May 2023 23:32:14 +0700 Subject: [PATCH] cleanup; feat: searcher --- encdec.py | 10 +++++----- searcher.py | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 searcher.py diff --git a/encdec.py b/encdec.py index befc38c..a060a1c 100755 --- a/encdec.py +++ b/encdec.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -from binascii import crc_hqx +from binascii import crc_hqx as crc16 from itertools import cycle import os from pathlib import Path @@ -13,8 +13,8 @@ from sys import stderr KEY = Path('./key.bin').read_bytes() -V_OFFSET = 8192 -V_LEN = 16 +V_START = 8192 +V_END = V_START + 16 CRC_LEN = 2 def eprint(*args, **kwargs): @@ -27,13 +27,13 @@ def xor(var): def decrypt(data): decrypted = xor(data) - eprint('version:', decrypted[V_OFFSET:V_OFFSET+V_LEN].decode()) + eprint('version:', decrypted[V_START:V_END].decode()) return decrypted[:-CRC_LEN] def encrypt(data): encrypted = xor(data) - checksum = crc_hqx(encrypted, 0).to_bytes(2, byteorder='little') + checksum = crc16(encrypted, 0).to_bytes(2, 'little') return encrypted + checksum diff --git a/searcher.py b/searcher.py new file mode 100644 index 0000000..766d652 --- /dev/null +++ b/searcher.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 + +from pathlib import Path +from sys import argv + +V_START = 8192 + +def main(): + if len(argv) != 3: + print(f'Usage: {argv[0]} decrypted_file.bin') + exit(128) + + search_for = argv[1].encode() + data = Path(argv[2]).read_bytes() + + if data[V_START:V_START+4] != b'2.01': + print('Encrypted file, choose decrypted.') + exit(200) + + search_for_len = len(search_for) + + for i in range(len(data)): + if data[i:i+search_for_len] == search_for: + print(f'[{i}]: {data[i:i+32]}') + +if __name__ == '__main__': + main()