CTF/포렌식

[Tenable CTF] Secret Images - 포렌식 / PIL

SecurityMan 2023. 3. 27. 11:00

 

생각보다 자주 보이는 유형의 스테가노그래피 문제

 

오래전에 블로그에서도 유사한 문제를 다룬적이 있다.

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

 

반응형

 

두개의 사진에서 숨겨진 데이터를 찾는것이 문제의 목표이다.

 

문제에서는 crypted1.png, crypted2.png 파일 두개가 주어진다.

 

 

각 이미지는 이렇게 생겼다.

 

노이즈처럼 지지직 하게 생긴 이미지가 두개 주어진다.

 

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

PIL은 Python Imaging Library의 약자로

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


pip install image

pip install pillow

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

 

from PIL import Image

imgA = Image.open('crypt1.png').convert('RGB')
imgB = Image.open('crypt2.png').convert('RGB')

xlength = 713
ylength = 346

img_div = Image.new('RGB', (xlength,ylength), (255, 255, 255))

for y in range(ylength):
    for x in range(xlength):
        r, g, b = imgA.getpixel((x,y))
        r2, g2, b2 = imgB.getpixel((x,y))

        img_div.putpixel((x,y),((r^r2),(g^g2),(b^b2)))

filename = 'xor.png'
img_div.save(filename)

 

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

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

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

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

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

 

 

코드를 실행시키면 두개의 이미지가 XOR 되어서 새로운 이미지가 생성이 되고

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

반응형