CTF/포렌식

[UMDCTF] Padme Twice - 포렌식 / 스테가노그래피 / PIL

SecurityMan 2022. 4. 30. 11:00


재미있는 문제였다.

실제 대회에서는 Crypto로 분류된 문제였으나

뭔가 포렌식적인 요소가 있는거 같아서 포렌식으로 분류를 해봤다.

사실 이런 문제들은 코에 걸면 코걸이 귀에 걸면 귀걸이다.

반응형


다운로드 링크를 클릭하면 이미지 파일을 두개 받을 수 있다.


이렇게 지지직 하는 이미지 파일 두개가 주어지는데

자세히 보면 어렴풋이 어떤 여성의 실루엣이 보인다.

뭔가 하나의 이미지를 두개로 쪼개놓은 느낌이다.

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

PIL은 Python Imaging Library의 약자로

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


pip install image

pip install pillow

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

from PIL import Image

img1 = Image.open('crypt1.png').convert('RGB')
img2 = Image.open('crypt2.png').convert('RGB')

xlen = 775
ylen = 500

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 되어서 새로운 이미지가 생성이 되고

생성된 이미지에서 플래그를 찾을 수 있다.

반응형