4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / checksum.py PY
#!/usr/bin/env python3

import sys

if len(sys.argv) != 2:
    print(f"Usage: {sys.argv[0]} file")
    exit(1)

filename = sys.argv[1]

with open(filename, "rb") as f:
    buf = f.read()
    print(buf)

    # Calculate 32 bit CRC checksum, taken from get_checksum1() in checksum.c
    s1 = s2 = 0
    for i in range(0, len(buf) - 4, 4):
        s2 += 4 * (s1 + buf[i]) + 3 * buf[i + 1] + 2 * buf[i + 2] + buf[i + 3]
        s1 += buf[i + 0] + buf[i + 1] + buf[i + 2] + buf[i + 3]

    for i in range(len(buf) - 4, len(buf)):
        s1 += buf[i]
        s2 += s1
    sum1 = (s1 & 0xFFFF) + (s2 << 16)
    print(f"sum1: {hex(sum1)}")