본문 바로가기
[DigitalForensic] with CTF

[DigitalForensic] with CTF - mystery1 - mystery2

by skyepodium 2022. 8. 14.

1. 개요

pillow 문제

 

2. 분석

1) 파일 2개를 받습니다.

잘 살펴보니 2개의 png 파일을 조금씩 다르고, 흰색 검은색 이외의 색이 종종 섞여있습니다.

 

2) python 코드

 

코드를 짜면서 조금 기교를 부렸는데

mystery1.png 파일에서 플래그 문자열 부분은 흰색, 검은색 보다 빨간색, 파란색, 초록색 위주로 되어 있어서

 

mystery1.png의 픽셀이 흰색 또는 검은색일때는 흰색만 넣도록 작성했습니다.

from PIL import Image

mystery1 = Image.open("mystery1.png")
rgba = mystery1.convert("RGBA")
data1 = mystery1.load()
mystery1.close()

mystery2 = Image.open("mystery2.png")
data2 = mystery2.load()
mystery2.close()

width, height = mystery1.size

BLACK = (0, 0, 0, 255)
WHITE = (255, 255, 255, 255)

new_data = []
for y in range(height):

    for x in range(width):
        d1, d2 = data1[x, y], data2[x, y]
        
        if d1 == BLACK or d1 == WHITE:
            new_data.append(WHITE)
            continue

        if d1 == d2:
            new_data.append(WHITE)
        else:
            new_data.append(BLACK)

result = Image.new("RGB", (width, height))
result.putdata(new_data)
result.save("result.png", "PNG")