campctf2023-chall-tis256

Zachtronics TIS100-inspired reversing challenge for CampCTF 2023
git clone https://git.sinitax.com/sinitax/campctf2023-chall-tis256
Log | Files | Refs | Submodules | README | sfeed.txt

decode.py (459B)


      1
      2mem = bytes()
      3for i in range(4):
      4    mem += open(f"build/memory{i+1}.bin", "rb").read()
      5
      6offset = 0x80
      7lsfr = mem[0xff]
      8while True:
      9    bits = [int(v) for v in bin(lsfr)[2:].zfill(8)]
     10    bits = bits[7:] + bits[0:7]
     11    bits[0] ^= bits[7-2]
     12    bits[0] ^= bits[7-5]
     13    lsfr = sum([2**(7-i) if v else 0 for i,v in enumerate(bits)])
     14    b = mem[offset + (lsfr & (0xff >> 3))]
     15    fb = b ^ lsfr
     16    print(chr(fb), end="")
     17    if fb == 0:
     18        break
     19print()