Simple Crack Me 2

파이썬이 data type 구분이 없어서 약간 헤맨 문제…
Solution
data = [
0xf8, 0xe0, 0xe6, 0x9e, 0x7f, 0x32, 0x68, 0x31, 0x05, 0xdc, 0xa1,
0xaa, 0xaa, 0x09, 0xb3, 0xd8, 0x41, 0xf0, 0x36, 0x8c, 0xce, 0xc7,
0xac, 0x66, 0x91, 0x4c, 0x32, 0xff, 0x05, 0xe0, 0xd9, 0x91
]
key1 = [0x11, 0x33, 0x55, 0x77, 0x99, 0xbb, 0xdd]
key2 = [0xef, 0xbe, 0xad, 0xde]
key3 = [0xde, 0xad, 0xbe, 0xef]
# func_xor
for i in range(len(data)):
data[i] = data[i] ^ key1[i%len(key1)]
# func_add
for i in range(len(data)):
data[i] = data[i] - 0xf3
if data[i] < 0:
data[i] += 256
# func_sub
for i in range(len(data)):
data[i] = data[i] + 0x4d
if data[i] > 255:
data[i] -= 256
# func_xor
for i in range(len(data)):
data[i] = data[i] ^ key2[i%len(key2)]
# func_sub
for i in range(len(data)):
data[i] = data[i] + 0x5a
if data[i] > 255:
data[i] -= 256
# func_add
for i in range(len(data)):
data[i] = data[i] - 0x1f
if data[i] < 0:
data[i] += 256
# func_xor
for i in range(len(data)):
data[i] = data[i] ^ key3[i%len(key3)]
# Print flag
for i in range(len(data)):
print(chr(data[i]), end="")
print()