R136A1

[ctf-d] flagception :: else (PIL) 본문

FORENSIC/ctf-d

[ctf-d] flagception :: else (PIL)

r136a1x27 2022. 1. 18. 23:43

깃발에 플래그를 숨겨놓았다고 해서 일단 대충 이미지 뷰어로 깃발을 자세히 봤다

익숙한 모양이 보인다...
https://r136a1x27.tistory.com/371

포토샵 곡선으로 이렇게 저렇게 잘 조절해주면 더 잘보인다.

크기는 7x20 픽셀이다


1) 파란색은 0, 검은색은 1로 하여 7비트로 구성된 이진수 20줄을 직접 써내고,

이진수 변환 사이트에서 변환한다

https://paulschou.com/tools/xlate/ 

 

2) PIL을 활용하여 코드를 짠다

다행히도 이번 문제는 복잡한 그림이 아니었어서 기존 코드를 그대로 재활용하면 된다

#0000ff 

#000000

 

from PIL import Image

pic = Image.open("logo2.png")
data = pic.load()
black = (0, 0, 0)

binary_lines = []
width, height = pic.size
text = ""

for y in range(height):
    binary_line = []
    for x in range(width):
        pixel = data[x, y]

        if pixel == black:
            binary_line.append('1')
        else:
            binary_line.append('0')

    binary_lines.append( binary_line )

for i in binary_lines:
    text += ''.join([chr(int(''.join(i),2))])

print(text)

Comments