I love me a good reversive algorithm.
ct = [179, 162, 146, 80, 226, 146, 80, 35, 131, 226, 242, 67, 226, 83, 80, 115, 67, 80, 83, 195, 80, 83, 83, 80, 67, 243, 243, 211, 80, 67, 243, 243, 194, 99, 243, 99, 130, 179, 80, 35, 179, 147, 147, 80, 147, 179, 242, 80, 146, 83, 243, 226, 227, 80, 80, 130, 115, 179, 243, 99, 80, 51, 83, 115, 195, 51, 80, 146, 131, 80, 243, 130, 51, 179, 67, 243, 211, 162, 80, 162, 226, 179, 243, 80, 130, 226, 130, 35, 51, 211, 131, 51, 99, 115, 50, 80, 80, 146, 83, 51, 130, 35, 51, 226, 211, 18, 51, 195, 67, 226, 179, 147, 99, 51, 114]
rot = lambda x: ((x>>4)+(x<<4)&0xff)
start = []
end = []
to_start = 0
while(len(ct) > 0):
char = rot(ct.pop() ^ 0xa5)
if to_start:
start.append(char)
else:
end = [char] + end
to_start = not to_start
print(bytes(start + end))
This flag checker just checks every byte of the flag by xoring it against a constant and a value from the ct array. It does this by checking the last byte of the flag, then reversing the flag and repeating. The flag can be recovered by xoring the characters and putting them back in the right order.