워게임/CTFlearn

[CTFlearn] Old memories - 프로그래밍 / PIL

SecurityMan 2023. 8. 1. 11:00

 

CTFlearn에서 제공하는 프로그래밍 카테고리의

 

Hard 난이도 문제

 

이번 문제는 Hard 치고는 쉬운 편이다.

 

카테고리도 프로그래밍 보단 스테가노그래피에 가까운것 같다.

 

반응형

 

 

문제에서 주어지는 것은

 

1.png, 2.png 두 개의 파일이다.

 

이전에 블로그에서 유사한 문제를 다룬적이 있었는데

 

거의 그대로 하면 된다.

(https://hackingstudypad.tistory.com/125)

 

이번 문제는 Python PIL 라이브러리를 이용해서 풀었다.

PIL은 Python Imaging Library의 약자로

파이썬으로 이미지 처리를 할 수 있도록 해주는 라이브러리이다.


pip install image

pip install pillow

두 명령어를 이용해서 다운로드 받아주면 된다.

 

from PIL import Image

img1 = Image.open('1.png').convert('RGB')
img2 = Image.open('2.png').convert('RGB')

xlen = 512
ylen = 512

new = Image.new('RGB', (xlen,ylen), (255,255,255))

for y in range(ylen):
	for x in range(xlen):
		r,g,b = img1.getpixel((x,y))
		r2,g2,b2 = img2.getpixel((x,y))
		new.putpixel((x,y),((r^r2),(g^g2),(b^b2)))
            
new.save('xor.png')

 

문제를 푸는 코드는 이렇게 작성한다.

주어진 두 이미지를 각각 불러와서 img1, img2 변수에 넣어준다.

그다음 이미지의 x, y 크기를 지정해주고

두 이미지의 각 픽셀의 RGB 값을 가져와서 서로 XOR을 시켜준 뒤,

결과를 새로운 이미지 파일로 저장해주는 코드이다.

 

 

이미지 크키는 우클릭 - 속성에서 이렇게 확인이 가능하다.

 

 

 

코드를 실행시키면 생성되는 xor.png 파일에서

 

 

문제의 플래그를 확인할 수 있다.

반응형