CTF | wargame

nullcon17 / Programming Question 1 (픽셀 데이터 -> png 변환)

nopdata 2017. 3. 10. 15:35
txt파일이 주어진다. 파일안에는 (255,255,255)... 이런 식을 픽셀 값이 저장되어 있는 텍스트가 주어진다.
시작부분을 보면 친절하게 [ ]로 묶여있다.
파이썬에서 바로 리스트 형태로 만들어 놓고 png로 변환하라는 의미로 알고 PIL을 이용해서 이미지를 만들었다.

문제는 만들기 위해서는 배경판의 가로 세로 크기를 정해야 하는데 이는 주어진 텍스트 데이터 픽셀의 크기를 보고 알 수 있다.
총 528601이므로 %연산자로 나누어서 떨어지는 569*929가 된다. 가로 길이는 929, 세로길이는 569로 해 주어야 한다.

사용한 소스코드는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from PIL import Image
import os
data = eval(open('abc.txt','r').read())
res = Image.new("RGB",(929,569),(200,200,200))
 
cnt = 0
 
for y in range(0,569):
    for x in range(0,929):
        res.putpixel((x,y),data[cnt])
        cnt += 1
 
= open('output.png','wb')
res.save(f)
f.close()
os.system('output.png')
cs

flag : flag{Pil_PIL_PIL}