DESCRIPTION
My girlfriend and I captured our best moments of Valentine’s Day in a portable graphics network. But unfortunately I am not able to open it as I accidentally ended up encrypting it. Can you help me get my memories back?
Author : Pushkar Deore
FLAG FORMAT:
VishwaCTF{}
Attachments
2가지 파일들이 존재한다.
source.txt – png 이미지 파일을 암호화시키는 python3 스크립트
enc.txt – 암호화된 png 이미지
source.txt
from PIL import Image from itertools import cycle def xor(a, b): return [i^j for i, j in zip(a, cycle(b))] f = open("original.png", "rb").read() key = [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]] enc = bytearray(xor(f,key)) open('enc.txt', 'wb').write(enc)
암호화되지 않은 원본 이미지 파일에서 8바이트 시그니처 헤더값으로 XOR 암호화시키고 있었다.
solve.py
from PIL import Image from itertools import cycle def xor(a, b): return [i^j for i, j in zip(a, cycle(b))] enc = open("enc.txt", "rb").read() key = [0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A] dec = bytearray(xor(enc,key)) open('enc.txt.png', 'wb').write(dec)
8바이트 png 시그니처 헤더값은 이미 알려져있기 때문에,
그 값으로 다시 XOR 연산시키면 된다.