CTF | wargame

Sharif 2016 / forensic 150 pretty_raw (카빙, 바이너리 데이터 -> png convert)

nopdata 2017. 3. 30. 00:01
Sharif 2016 - forensic 150


문제는 바이너리 데이터 파일이 주어진다.
이미지 파일도 아니고 어떤 파일도 아니다. 파일을 훑어보면 png파일을 카빙할 수 있다.
이유는 모르겠으나 winhex에서는 카빙이 되지 않아 손으로 직접 카빙했다.
카빙된 이미지 파일은 다음과 같다.


width = 1570, height = 74, bit depth = 8로 가로, 세로길이, bit depth를 하면 1570*74*8 => 116,180 bytes가 된다.
여기서 알아야 할 점은 주어진 바이너리 데이터가 png이미지의 바이너리 파일이라는 점이다.

하지만 제공된 데이터 파일에서 png파일을 빼면 116,254 bytes가 남는다. 위 사진에서 계산한 116,180 bytes 와는 맞지 않는데 두 차이가 74 bytes가 된다.
그렇다면 위 사진에서 제공된 이미지 픽셀의 가로 길이가 1570이 아닌 1571이라는 점을 알아야 한다.

이제 바이너리 데이터 파일을 png로 변환해야 하는데 convert기능을 이용한다.


그러면 1571x74의 png이미지가 데이터를 기반으로 생성이 되며 이를 열어보면

위 이미지가 나온다.

[ 파이썬으로 convert를 대신하는 소스코드 작성 필요 ]

Answer : SharifCTF{100ae53903cbb68ab523c8e858034988}