```pythondef undo_thing(a, b):    return (a ^ b) >> 1
x = 'a' * 25
random.seed(997)k = [random.randint(0, 256) for _ in range(len(x))]print("k =", k)a = { b: do_thing(ord(c), d) for (b, c), d in zip(enumerate(x), k) }b = list(range(len(x)))random.shuffle(b)c = [a[i] for i in b[::-1]]kn = [47, 123, 113, 232, 118, 98, 183, 183, 77, 64, 218, 223, 232, 82, 16, 72, 68, 191, 54, 116, 38, 151, 174, 234, 127]valid = len(list(filter(lambda s: kn[s[0]] == s[1], enumerate(c)))) # i.e. c = kn
print("---")
c = knprint("Need c =", c)a = [None for _ in range(len(b[::-1]))]for i in range(len(b[::-1])):    a[b[::-1][i]] = c[i]print("Need a =", a)
undo_a = { b: chr(undo_thing(a[b], d)) for (b, c), d in zip(enumerate(x), k) }print(''.join(undo_a[i] for i in range(25)))```
[Read the Full Writeup Here](https://ctf.zeyu2001.com/2021/metactf-cybergames/i-hate-python)