제로펫님의 글에서 가져와서 보강했습니다.
간혹 디시를 돌아다니다보면 '이미지를 다운로드 받아서 압축을 풀면 파일이 나옴'과 같은, 신기한 방식으로 파일을 업로드하는 글을 볼 수 있습니다.
어떻게 이런 일이 가능한걸까요? 어떻게 해야 이런 이미지를 만들 수 있을까요?
압축 프로그램이던 이미지 뷰어 프로그램이던 파일을 열 때 찾는 문자열이 있습니다. 프로그램이 파일을 읽다가 특정 문자열을 발견하면 '아, 이 파일은 이러이러한 형식의 파일이구나!'라고 알게 되는겁니다. 이러한 문자열을 매직 넘버(Magic Number)라고 합니다.
예를 들어 PNG 파일의 매직 넘버는 \211 P N G \r \n \032 \n
(89 50 4E 47 0D 0A 1A 0A
)입니다.
이미지 파일의 매직 넘버와 압축 파일의 매직 넘버를 프로그램이 읽기만 하면 그 뒤의 내용들을 구별할 수 있으므로, 앞선 것처럼 '이미지에 압축파일을 숨기기'가 가능해집니다.
이미지에 압축파일 숨기기
이미지에 압축파일을 숨기기 위해서는 두가지 파일을 준비해야 합니다. 이미지 파일과 압축 파일이지요.
template.png
는 이미지 파일이며, lorem.txt
와 massive.dat
파일을 ZIP 파일로 압축할겁니다.
lorem.txt
파일과 massive.dat
파일을 압축하여 hidden.zip
파일을 만들었습니다.
이제 이 디렉토리의 배경에 마우스 커서를 가져다 댄 후, Shift 키를 누른 상태에서 우클릭을 하면 '여기에 명령 프롬프트 열기'와 같은 메뉴가 나타날 것입니다. 해당 메뉴를 클릭하면 명령 프롬프트 창이 나타납니다.
명령 프롬프트에서 > 앞의 경로가 현재 디렉토리임을 확인한 후, 다음과 같이 입력합니다.
copy /B template.png+hidden.zip unzip_me.png
물론 template
, hidden
, unzip_me
와 같은 파일명은 여러분의 상황에 맞게 바꾸셔야 합니다.
이렇게 하면 새로이 unzip_me.png
파일이 생성되는데, 이 파일을 우클릭해서 정보를 보면 다음과 같이 이미지 파일과 압축 파일 모두 인식되는 것을 확인할 수 있습니다.
하지만 이렇게 생성된 unzip_me.png
파일을 그대로 업로드해서는 안됩니다.
unzip_me.png
의 확장자만을 jpg
로 변경해야 합니다. 이렇게 하지 않으면 여러분이 작업한 내역이 제대로 반영이 되지 않을 수 있습니다.
unzip_me.jpg
가 된 PNG 파일을 글을 작성할 때 이미지로 업로드 하면 됩니다.