WarGame/DigitalForensic with CTF

[DigitalForensic] with CTF 브리타니아의 원더랜드…

자료로주어진 color.png를 확인해보자

엄.... 특이한 사진인거같다. 진짜로 특이하다 우선 해상도를 보자

7 X 200의 해상도이다. 이건 아마 그림에 key를 숨기지는 않았을거 같다. hxd로 내부를 봐도 특별한 string은 보이지 않는다. 힌트는 이 사진이 검정색과 붉은 색으로만 이루어져있다는 점이다. 이를 비트로 생각해서 검은색은 1, 붉은색은 0으로 해석해보자

보면 극단적으로 2개의 픽셀로 표현되어있으니 말이다. 읽는 방법이야 방향따라 다르겠지만 7 X 200이었으니 위에서부터 한줄씩 한 Byte가 된다고 생각했다. 보통 문자열이 위치하는 곳은 128아래이니 MSB는(바이트의 가장 위쪽 비트 그니까 2의 7제공위치 비트) 0으로 고정했다. python 스크립트를 다음과 같이 제작하였다. 

from PIL import Image

if __name__=="__main__" :

    im = Image.open("color.png")

    B = (0,0,0)
    R = (255,0,0)


    ans = ""

    x = im.size[0]
    y = im.size[1]

    cnt = 7

    for i in range(y) :
        ans+="0"
        for j in range(x) :
            cnt=cnt-1
            
            if(im.getpixel((j,i))==B) :
                ans+="0"
            elif(im.getpixel((j,i))==R) :
                ans+="1"
                
            if(cnt==0) :
                ans+=" "
                cnt=7

    print(ans)

 Red를 1로 한 이유는 문제에서 적룡이 메인이기 때문이다. 뭐 아니면 B를 1로 할래그랬지만 말이다.

결과값으로 나온 bit를 다음홈페이지에서 string으로 변경해주었다. 직접 만들어도 되지만 이미 기능있는거 만들어서 뭐하나 싶었다.

 

Binary to String Converter

Binary to String Converter Enter binary numbers with any prefix / postfix / delimiter and press the Convert button (E.g: 01000101 01111000 01100001 01101101 01110000 01101100 01100101): String to binary converter ► ASCII text encoding uses fixed 1 byte f

www.rapidtables.com

나온값은 KEY가 맞았다.