Every CTF starts off with a Caesar cipher, but we're more classy.
from secret import flag, shift def encrypt(d, s): e = "" for c in d: e += chr((ord(c) + s) % 0xFF) return e assert encrypt(flag, shift) == ":<M?TLH8<A:KFBG@V"
何をやっても求まる。シフト数を求めるよりも全探索するほうが頭を使わない
def encrypt(d, s): e = "" for c in d: e += chr((ord(c) + s) % 0xFF) return e ciphertext = ":<M?TLH8<A:KFBG@V" for shift in range(256): print(encrypt(ciphertext, shift))
$ python3 solve.py | grep actf -a actf{so_charming}