파일 시그니처

IT 위키
File Signature; Magic Number; 매직 넘버
파일의 특정 위치에 들어 있는 고정된 몇 바이트. 그 파일이 어떤 형식인지 식별하는 표지다

응용 프로그램이 자기가 만든 파일임을 알아볼 수 있도록 넣는다. 대부분 파일의 맨 앞에 있고(헤더 시그니처), 끝에 두는 형식도 있다(푸터 시그니처).

왜 중요한가

[편집 | 원본 편집]
  • 확장자는 얼마든지 바꿀 수 있지만 시그니처는 파일 내용의 일부다. 실제 형식을 판별하는 근거가 된다
  • 악성코드가 `.jpg` 로 위장한 실행 파일을 올리는 것을 탐지할 수 있다
  • 디지털 포렌식파일 카빙(삭제된 파일 복구)은 디스크에서 헤더·푸터 시그니처를 찾아 그 사이를 잘라내는 방식이다

주요 시그니처

[편집 | 원본 편집]
형식 헤더(16진) 아스키
실행 파일(PE, EXE/DLL) 4D 5A MZ
ELF (리눅스 실행 파일) 7F 45 4C 46 .ELF
PDF 25 50 44 46 %PDF
PNG 89 50 4E 47 0D 0A 1A 0A .PNG
JPEG FF D8 FF
GIF 47 49 46 38 GIF8
ZIP / DOCX / XLSX / APK 50 4B 03 04 PK..
RAR 52 61 72 21 Rar!
7z 37 7A BC AF 27 1C 7z...
한글(HWP 5.0) D0 CF 11 E0 A1 B1 1A E1 (복합 문서)
  • ZIP 계열이 같은 시그니처를 쓰는 것은 DOCX·APK 등이 실제로 ZIP 압축 파일이기 때문이다.

비슷한 용어와 구분

[편집 | 원본 편집]
용어 의미
파일 시그니처 파일 내부의 고정된 식별 바이트
확장자 파일 이름 뒤에 붙는 표시. 내용과 무관하게 바꿀 수 있다
메타데이터 작성자·생성일시 등 파일에 관한 부가 정보
레코드 데이터를 구성하는 논리적 단위
(백신의) 시그니처 악성코드 탐지용 패턴. 이름이 같지만 다른 개념이다

확인 방법

[편집 | 원본 편집]
$ file suspicious.jpg      # 리눅스. 시그니처로 실제 형식을 알려준다
$ xxd -l 16 file.bin       # 앞 16바이트를 16진으로 확인

같이 보기

[편집 | 원본 편집]