Untitled

#!/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)

Untitled