본문 바로가기

CTF Write-Ups/[DigitalForensic] with CTF

[CTF-d] Multimedia_브리타니아의 원더랜드...

먼저 color.png 사진을 확인해 보았다.

 

 

가로 7 픽셀, 세로 200 픽셀인

검은색과 빨간색으로만 이루어진 길쭉한 그림 파일임을 확인할 수 있다.

 

일단 내가 아는 방법으로 이 파일에 접근해 보았다.

LSB 스테가노그래피 디코더 사이트에 넣어보니 역시나 아무것도 발견할 수 없었다.

또 HxD 프로그램으로도 확인해 보았는데 특별한 것을 발견할 수 없었다.

 


 

그래서 풀이를 찾아보았더니 

위 사진의 검은색을 이진수 0으로, 빨간색을 이진수 1로 변환해 바이너리 값으로 추출한 후, 해당 바이너리 값을 아스키 코드로 다시 변환하면 키가 나온다고 한다.

 

먼저 위 사진을 바이너리 값으로 추출하는 작업을 해 보았다.

 

(참고한 블로그) https://hackpo.tistory.com/185

 

브리타니아의 원더랜드...

문제입니다 color.png를 확인해 봅니다 알아보기 힘든 사진이 나왔습니다 (도저히 어떻게 접근해야 되는지 모르겠습니다 풀이를 보도록 합니다) Q. 풀이를 보면서 공부하면 도움이 되나요? A. 확실�

hackpo.tistory.com

 

아래 코드는 검은색을 이진수 0으로, 빨간색을 이진수 1로 변환해 바이너리 값으로 추출한 후

다시 ASCII 코드로 변환하는 코드이다.

from PIL import Image

pic = Image.open("color.png")
data = pic.load()
red = (255, 0, 0)

binary_lines = []
width, height = pic.size

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

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

    binary_lines.append( binary_line ) #여기까지 바이너리 값 추출

ascii_text = ''.join([ chr(int(''.join(separated),2))for separated in binary_lines ])

print ( ascii_text )

 


Python Image Library란?


파이썬 인터프리터에 다양한 이미지 파일 형식을 지원하고 강력한 이미지 처리와 그래픽 기능을 제공하는 자유-오픈 소스 소프트웨어 라이브러리이다. 줄여서 PIL이라고 부른다.

(출처: 위키백과)

 

내 컴퓨터엔 파이썬 3이 설치되어 있어서 먼저

pip3 install image로 image 라이브러리를 다운받았다.

(파이썬 2일경우 pip install image)

 

 

그 다음 py 명령어로 위의 파이썬 코드를 실행하니 키가 나왔다!

 

 

key: 3xXKkFstTUpsG2IFDirE6xDrcAF8DSx4iWxd5f9IQ9T205izN8lS2MQUlsF11gT4TFXHHlLHVHprNTtrh6lURfdUW7Lpuzgu1VKzwb1bg1oq6Ae3GnykkLZZsnze3HVLxHlfCYtzyrcV2Oxp0Gb0Z2ELphR4Oxo7TyvHCuWKWlN8t8KIfHysZK7jBNPu6wRVEUPIwVra