
#!/usr/bin/env python3
hex_list = [(hex(i)[2:].zfill(2).upper()) for i in range(256)]
with open('flag.png', 'rb') as f:
plain_s = f.read()
plain_list = [hex(i)[2:].zfill(2).upper() for i in plain_s]
enc_list = list(range(len(plain_list)))
for i in range(len(plain_list)):
hex_b = plain_list[i]
index = hex_list.index(hex_b)
enc_list[i] = hex_list[(index + 128) % len(hex_list)]
enc_list = ''.join(enc_list)
with open('encfile', 'w', encoding='utf-8') as f:
f.write(enc_list)
위는 flag.png를 가지고 암호화하는 과정이다.
이를 반대로 진행하여 flag.png에 올바른 값을 알아낼 수 있을것이다.
hex_list = [(hex(i)[2:].zfill(2).upper()) for i in range(256)]
with open('encfile', 'r', encoding='utf-8') as f:
enc_s = f.read()
enc_list = [enc_s[i:i+2] for i in range(0, len(enc_s), 2)]
dec_list = list(range(len(enc_list)))
for i in range(len(enc_list)):
hex_b = enc_list[i]
index = hex_list.index(hex_b)
dec_list[i] = hex_list[(index - 128) % len(hex_list)]
dec_s = bytes.fromhex(''.join(dec_list))
with open('flag.png', 'wb') as f:
f.write(dec_s)
