파일 형식 식별에 사용되는 정보
"파일 형식 식별"에 사용되는 정보 (매직 넘버)의 주소와 길이, 그리고 해당 파일 형식의 핵심 정보가 담긴 주요 데이터 구조체의 주소와 길이에 대한 정보
파일 형식 | 매직 넘버 주소 | 매직 넘버 길이 (바이트) | 주요 데이터 구조체 (예시) | 주소 (파일 시작 기준) | 길이 (바이트) | 비고 |
JPEG | 0x00 | 4 | SOF0 (Start of Frame) 마커 | 0x02 ~ (SOI 마커 이후) | SOF0 마커의 Length 필드 값 (2바이트) | SOF0 마커에는 이미지 폭, 높이, 색상 구성 요소 등의 정보가 담겨 있음 |
PNG | 0x00 | 8 | IHDR 청크 | 0x08 | (IHDR 청크 데이터 길이 13) + 청크 유형 (4) + 길이 (4) + CRC (4) = 25 | IHDR 청크에는 이미지 폭, 높이, 색상 유형, 비트 깊이 등의 정보가 담겨 있음 |
GIF | 0x00 | 6 | Logical Screen Descriptor | 0x06 (GIF87a/89a 매직 넘버 다음) | 7 | 이미지 폭, 높이, 색상 테이블 정보 등이 담겨 있음 |
ZIP | 0x00 | 4 | Local file header | 각 파일 엔트리 시작 위치 (파일 구조 분석 필요) | 가변 (압축된 파일 데이터 길이 + 헤더 정보) | 압축된 파일 데이터, 파일 이름, 파일 크기 정보 등이 담겨 있음 |
WEBP | 0x00 | 4 (RIFF) | VP8/VP8L/ALPH 청크 | RIFF 헤더 이후 (파일 구조 분석 필요) | 가변 (이미지 데이터 크기에 따라 다름) | 이미지 데이터 |
BMP | 0x00 | 2 | DIB Header | 0x0E (Bitmap File Header 이후) | DIB 헤더 크기에 따라 다름 (40, 108, 124 바이트 등) | 이미지 폭, 높이, 비트 깊이, 압축 방식 정보 등이 담겨 있음 |
TIFF | 0x00 | 4 | IFH (Image File Header) | 0x04 (바이트 순서 마커 이후) | 8 | 이미지 데이터 오프셋, 필드 개수 정보 등이 담겨 있음 |
XML | 0x00 | 5 | 루트 엘리먼트 | XML 파서로 문서 파싱 | XML 파서로 파싱하여 요소의 시작, 종료 위치 확인 | XML 문서의 구조를 정의하는 최상위 엘리먼트 |
SVG | 0x00 | 4 | <svg 엘리먼트 | XML 파서로 문서 파싱 | XML 파서로 파싱하여 요소의 시작, 종료 위치 확인 | SVG 이미지의 뷰포트, 좌표 시스템 등을 정의 |
0x00 | 4 | PDF Body | PDF 파서로 문서 파싱 | PDF 객체 구조에 따라 가변적 | PDF 문서의 내용 (텍스트, 이미지, 폰트 등) | |
MP3 | 0x00 | 2/3 | ID3 태그 (선택 사항) | 0x00 (ID3 태그 존재 시) | 가변 (ID3 태그 크기에 따라 다름) | MP3 파일의 메타 정보 (제목, 아티스트, 앨범 등) |
Ogg | 0x00 | 4 | Ogg Page Header | Ogg 페이지 시작 위치 | 27 | 페이지 시리얼 넘버, 페이지 체크섬 등 Ogg 스트림 정보를 담고 있음 |
MP4 | 0x04 | 4 | ftyp 박스 | 0x04 | ftyp 박스 크기에 따라 다름 (8바이트 이상) | MP4 파일의 파일 타입, 호환성 정보 등을 담고 있음 |
OGV | 0x00 | 4 | Ogg Page Header | Ogg 페이지 시작 위치 | 27 | Ogg 컨테이너 내의 비디오 스트림 정보 |
RAR | 0x00 | 4 | Archive Header | 0x00 | 가변 (헤더 유형 및 데이터에 따라 다름) | 압축 해제에 필요한 기본 정보, 파일 속성 등 |
7z | 0x00 | 6 | Header | 0x06 (시그니처 이후) | 가변 (헤더 구조에 따라 다름) | 압축 방식, 암호화 정보, 파일 메타데이터 등 |
GZIP | 0x00 | 2 | Compressed Data | 0x0A (헤더 이후) | 가변 (압축 데이터 크기에 따라 다름) | 압축된 데이터 |
XSL | 0x00 | 5 | <xsl:stylesheet> | XML 파서로 문서 파싱 | XML 파서로 파싱하여 요소의 시작, 종료 위치 확인 | XSLT 스타일시트 정의 |
WebAssembly | 0x00 | 4 | Version Section | 0x08 (매직 넘버 및 버전 섹션 이후) | 4 | WASM 파일 버전 정보 |
설명:
- 매직 넘버 주소: 파일 시작을 0으로 했을 때, 매직 넘버가 시작되는 위치입니다.
- 매직 넘버 길이: 매직 넘버의 바이트 단위 길이입니다.
- 주요 데이터 구조체 (예시): 파일 형식에 따라 핵심 정보를 담고 있는 데이터 구조체의 예시입니다. 이 외에도 다양한 데이터 구조체가 존재합니다.
- 주소: 주요 데이터 구조체가 시작되는 위치입니다. 이 값은 파일 구조에 따라 달라질 수 있습니다.
- 길이: 주요 데이터 구조체의 바이트 단위 길이입니다. 이 값은 파일 구조, 데이터 크기 등에 따라 달라질 수 있습니다.
- 비고: 추가적인 설명 및 주의 사항입니다.
중요:
- 이 표는 각 파일 형식의 일반적인 구조를 기반으로 작성되었으며, 모든 파일에 적용되는 것은 아닙니다.
- 파일 구조는 파일 형식 버전, 옵션 설정 등에 따라 달라질 수 있습니다.
- 파일을 정확하게 분석하려면 해당 파일 형식의 공식 스펙 문서를 참조해야 합니다.
- 복잡한 파일 형식 (예: MP4, PDF)의 경우, 파일 구조 분석을 위해 전문적인 파서 라이브러리를 사용하는 것이 좋습니다.