얼마전 sophos 사이트에 올라온 DecodeMe 풀이

얼마전 sophos 사이트에 올라온 Decodeme 문제에 대한 풀이를 기록 합니다.

http://www.sophos.com/blogs/duck/g/2010/05/15/sophos-auscert-decodeme/
http://www.sophos.com/blogs/duck/g/2010/05/16/decodeme-t-shirt-tex/

문제를 보면 아래와 같은 로고가 주어지고 디코딩을 하라고 합니다.

%~~~~~~~~~~~~~~~~~~~~~~~~%
|H4sIAAAAAAACA3P3dLOwTOxh|
|YGF4zsBg7tHJMApGwYgE////|
|V/zJwsjF8I9BB8QH5QkGjhYG|
|xj/MD'              gULH|
|JrY'                BbVi|
|Tlx|   Y4NgmoOxWoxH4yL5d|
|VDR|   oTseHh8f6WK359lQU|
|qJy\              \YJOGt|
|xhN5I\              \dlr|
|qoJvnIznRDXvHjPWZ   |SY7|
|Lz31nKtYPklkV0F6w   |AKr|
|1E17                ,Vk5|
|afng              ,hp63R|
|VsvNzy8u9qpU670lon11hvnS|
|KNWuSS+vrvNf3HV05beU0NXB|
|p71kJQQYrAFt8kQCpwMAAA==|
%~~~~~~~~~~~~~~~~~~~~~~~~%
  D  E  C  O  D  E  M  E

마지막 문장 형태를 보아하니 ==는 Base64 인코딩에서 패딩 문자열이므로 Base64로 인코딩 되어 있을거라 추측할 수 있었습니다. 그럼 아래와 같이 Base64로 디코딩하여 파일로 저장하는 스크립트를 작성할 수 있었습니다.

#!/usr/bin/python
import re, base64

str = '''
%~~~~~~~~~~~~~~~~~~~~~~~~%
|H4sIAAAAAAACA3P3dLOwTOxh|
|YGF4zsBg7tHJMApGwYgE////|
|V/zJwsjF8I9BB8QH5QkGjhYG|
|xj/MD'              gULH|
|JrY'                BbVi|
|Tlx|   Y4NgmoOxWoxH4yL5d|
|VDR|   oTseHh8f6WK359lQU|
|qJy\              \YJOGt|
|xhN5I\              \dlr|
|qoJvnIznRDXvHjPWZ   |SY7|
|Lz31nKtYPklkV0F6w   |AKr|
|1E17                ,Vk5|
|afng              ,hp63R|
|VsvNzy8u9qpU670lon11hvnS|
|KNWuSS+vrvNf3HV05beU0NXB|
|p71kJQQYrAFt8kQCpwMAAA==|
%~~~~~~~~~~~~~~~~~~~~~~~~%
'''

data = re.sub('[|%~\',\\\]', '', str)
data = re.sub('\s', '', data)

ret = base64.b64decode(data)
file = open('output', 'wb')
file.write(ret)

실행을 하면 output 이라는 파일이 생성되고 해당 파일을 확인하면 아래와 같았습니다.

C:\Users\ByJJoon\Downloads\DecodeMe>file output
output: gzip compressed data, from Unix, max compression

gzip 압축 파일로 확인되어 해당 파일을 압축을 해제하니 아래와 같은 이미지가 들어 있었습니다.

보이시나요? -_-
잘 보면 http://www.sophos.com/anz/sofarsogood.html 문자열이 들어 있으며 해당 링크로 가보면 아래와 같은 문자열을 해독하라는 메세지가 나옵니다.

LFDT FXVT XQDT FTCL FCTB TPCY EGDJ
SRYP JPGC PTDD LFCJ PGNY ERLQ BLOY
DTFT CLFC TFXG RAYP BTPC YSFM YPRT
OLFC LFDG PYVT XQRA TFDG QRJP GCPT
DDYP QHYB LYUY HSRL FDTF XGRA YPVT
XQLR LQML IIYP YFRL FDGP YVTX QRAT
FDGQ RDTF TCYP QYWJ YER

이 문자열을 문자 빈도수를 이용하여 해독하는 툴을 이용하면 아래와 같이 번역이 가능합니다.

INMA NYWA YSMA NAGI NGAL ARGE COMP
UTER PROG RAMM INGP ROJE CTIS LIKE
MANA GING ANYO THER LARG EUND ERTA
KING INMO REWA YSTH ANMO STPR OGRA
MMER SBEL IEVE BUTI NMAN YOTH ERWA
YSIT ISDI FFER ENTI NMOR EWAY STHA
NMOS TMAN AGER SEXP ECT

최종 문자 내용을 아래와 같습니다.

IN MANY WAYS MANAGING A LARGE COMPUTER PROGRAMMING PROJECT IS LIKE MANAGING ANY OTHER LARGE UNDER TAKING IN MORE WAYS THAN MOST PROGRAMMERS BELIEVE BUT IN MAN Y OTHER WAYS IT IS DIFFERENT IN MORE WAYS THAN MOST MANAGERS EXPECT

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다