diff options
Diffstat (limited to 'research/bad-bruteforcing/inspecto.py')
-rw-r--r-- | research/bad-bruteforcing/inspecto.py | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/research/bad-bruteforcing/inspecto.py b/research/bad-bruteforcing/inspecto.py deleted file mode 100644 index 37dc3d6..0000000 --- a/research/bad-bruteforcing/inspecto.py +++ /dev/null @@ -1,77 +0,0 @@ -import os -from binascii import unhexlify, hexlify -import csv - -def load_samples(folder): - msgs, crcs, rawhex = [], [], [] - for fn in os.listdir(folder): - path = os.path.join(folder, fn) - with open(path, 'r') as f: - for line in f: - if '=' not in line: - continue - try: - h, c = line.strip().split('=') - data = list(unhexlify(h)) - chk = int(c, 16) - msgs.append(data) - crcs.append(chk) - rawhex.append(h.upper()) - except Exception: - continue - return msgs, crcs, rawhex - -def bit_diff(a, b): - return ''.join(['↑' if (a ^ b) & (1 << i) else '.' for i in reversed(range(8))]) - -def analyze(msgs, crcs, rawhex): - base_msg, base_crc = msgs[0], crcs[0] - base_hex = rawhex[0] - rows = [] - for idx, (msg, crc, raw) in enumerate(zip(msgs[1:], crcs[1:], rawhex[1:]), start=1): - maxlen = max(len(base_msg), len(msg)) - for i in range(maxlen): - b0 = base_msg[i] if i < len(base_msg) else None - b1 = msg[i] if i < len(msg) else None - if b0 != b1: - delta_crc = (crc - base_crc) & 0xFF - xor_crc = crc ^ base_crc - b0_str = f"{b0:02X}" if b0 is not None else "--" - b1_str = f"{b1:02X}" if b1 is not None else "--" - bitdiff = bit_diff(b0 or 0, b1 or 0) - print(f"Sample {idx} | Byte {i} | {b0_str} → {b1_str} | ΔCRC={crc:02X} | BitDiff={bitdiff}") - rows.append([ - idx, - i, - b0_str, - b1_str, - bitdiff, - f"{base_crc:02X}", - f"{crc:02X}", - f"{delta_crc:02X}", - f"{xor_crc:02X}", - raw, - f"{crc:02X}" - ]) - return rows - -# 📂 Point this to your folder -input_folder = "C:/Users/crt/Documents/bodeting/research/bad-bruteforcing/reveng-formatted" - -# 🧠 Do the work -msgs, crcs, rawhex = load_samples(input_folder) -rows = analyze(msgs, crcs, rawhex) - -# 📝 Save CSV -out_path = os.path.join(os.getcwd(), "crc_analysis_output.csv") -with open(out_path, 'w', newline='', encoding='utf-8') as f: - writer = csv.writer(f) - writer.writerow([ - "Sample", "Byte Index", "Base Byte", "Other Byte", "Bit Diff", - "Base CRC", "Other CRC", "CRC_DIFF", "CRC_XOR", - "HEX Input", "Original CRC" - ]) - writer.writerows(rows) - -print(f"\n✅ Analysis saved to: {out_path}") -os.system(f'start notepad "{out_path}"') |