CTF | wargame

Bits CTF / flagception (숨겨진 단서 찾기, 바이트 코드 변환)

nopdata 2017. 3. 11. 04:29
date : `17.02

Yo dawg, I heard you like flags
So I put a flag in your flag
Flag format: BITSCTF{a1phanum3r1c_w0rds}

대회의 메인 로고에서 답을 얻어야 하는 문제이다.

깃발 부분을 보면 특정 위치만 색이 다르다. 한 줄을 하나의 바이트 크기로 보고 보면 아스키 코드 범위 내이며, flag를 얻을 수  있다.
위 그림에서 그 부분만 추출 했다는 가정 하에 사용된 소스코드이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from PIL import Image
img = Image.open('data.png')
img = img.convert('RGB')
 
width = img.size[0]
height = img.size[1]
 
res = list()
for y in range(height):
    tmp = ""
    for x in range(width):
        if img.getpixel((x,y)) == (255,255,255):
            tmp += "0"
        else:
            tmp += "1"
    res.append(tmp)
 
 
 
func = lambda x:chr(eval("0b"+x))
print ''.join(map(func,res))
cs

Flag : BITSCTF{f1agc3pt10n}