[ 개요 ]
웹게임 개발을 하다가 이상한 것을 발견했다.
어떤 이미지 파일을 열어보니까 확장자는 JPG인데
알파값이 존재하고 있는 것이다.
정상적인 JPG 이미지라면
위와 같이, 배경이 투명하지 않아야 한다.
알파값이 진짜로 존재하는건지
포토샵으로 확인해보려고 했는데
위와 같이 오류를 표시한다.
일반적인 방법으로는 뭐가 문제인지
알 수 없어서 구글 검색을 해보니
(* png 말고도 gif에서도 알파값을 다룰 수
있다는 사실을 여기서 처음 알았음)
바이너리 분석을 통해서
파일 시그니처(File Signature)를 확인하면
파일의 진짜 확장자를 알아낼 수 있다는
사실을 알 수 있었다.
바이너리 분석을 하려면
별도의 프로그램을 설치해야 하는 것으로 보이는데
나는 프로그램 설치 없이 하고 싶어서
CMD 같은 기본적으로 있는 내장 프로그램을
이용한 바이너리 분석을 시도했고
그에 따른 성과를 정리해본다.
[ 실습 준비 ]
* 파일 확장명을 체크해야 한다.
(실습용 이미지 다운로드)
(파일 시그니처 확인사이트)
[ 실습 ]
압축파일에는 위와 같은 이미지가 들어있다.
(+ 맨 처음에 언급된 미스터리한 이미지도 포함)
탐색기의 주소창에 cmd를 입력하여
CMD를 열고 복사한 명령어를 실행해보자
( 실행결과 )
파일 시그니처 확인사이트에서
Ctrl + F를 통해서 확인해보자
txt, js, bat 등의 텍스트 계열 파일의 경우,
파일 시그니처가 표시되지 않고
내용 그대로가 표시된다.
★ 이름바꾸기에서 파일 확장자를 변경하면
바이너리에도 변화가 생길까?
image1.jpg를 image1.png로 변경했지만
Hex값에는 변화가 생기지 않았다.
즉, image1.png는 사실 jpg파일인 것이다.
이러한 원리로 문제의 이미지 파일의
진짜 확장자를 알아낼 수 있을 것이다.
[ 참고자료 ]
댓글