rlo-lo 2025. 5. 22. 14:12

파일 시그니처 File Signature 

- 헤더 시그니처 / 푸터 시그니처 

문서에 따라 시그니처를 매직 넘버라고 사용하는 경우도 있다. 

 

파일 카빙(File Carving) 기법

: 메타데이터보다 파일 자체의 바이너리 데이터를 이용해 디스크의 비할당 영역에서 파일을 복구하는 방식 

- 시그니처 기반 카빙 : 각 파일의 포맷 별로 존재하는 파일 시그니처를 이용하는 방식 

 

 

PNG

헤더 시그니처 : 89 50 4E 47 OD OA 1A OA

푸터 시그니처 : 49 45 4E 44 AE 42 60 82

PNG 파일구조는 파일 시그니처와 다양한 청크(공통된 데이터를 가지고 있는 데이터들의 집합)들의 집합으로 이루어져 있다. 

 

 

주요 청크 : IHDR , IDAT, IEND

<청크 구조>
{
 Length (4 bytes),				//청크 데이터의 길이
 Chunk Type (4 bytes),			//청크 타입(아스키 코드) 
 Chunk Data (Length bytes)		//청크 데이터 - 실제 데이터이며, 가변길이 
 CRC (4 bytes)					//순환중복검사의 약자. 데이터의 오류가 있는지 확인
}

//출처: https://mineeeee.tistory.com/entry/PNG-파일구조 [Push:티스토리]

 

IHDR 

: PNG 파일의 기본정보를 담고 있는 청크 (메타데이터 저장) 

- 데이터 길이는 언제나 13 byte!!! 

 

- 가로 , 세로(각각 4바이트)

- 비트 깊이(1 바이트) : 한 픽셀이 차지하는 비트의 양 1,2,4,8,16 가능

- 색 타입(1 바이트) : 색 유형을 숫자로 나타냄

 

  • 0: 그레이스케일 (비트 깊이: 1, 2, 4, 8, 16)
  • 2: RGB (비트 깊이: 8, 16)
  • 3: 색상 팔레트 (비트 깊이: 1, 2, 4, 8) PLTE 청크 필수
  • 4: 그레이스케일 + 알파 (비트 깊이: 8, 16)
  • 6: RGBA (비트 깊이: 8, 16)

 

- 압축 메소드 

항상 0 Deflate 사용 

- 필터링 메소드

항상 0 PNG 필터링 사용 

- 인터레이스 메소드

0(비인터레이스) 1(Adam7 인터레이스)

 

PLTE

: 팔레트 색상을 정의(색상 타입 3에서 필수)

- IDAT 청크 전에 존재해야 함 

- 3바이트(RGB) 단위의 색상목록 (최대 256)

 

IDAT

: 압축된 이미지 데이터를 포함

- 여러 개의 IDAT 청크 연속 가능 

- 압축 방식 Deflate (RFC1951)

 

IEND

: 파일의 끝 표시 

- 항상 마지막 청크 

- 데이터 없음 (길이 : 0바이트) 

- 정상적으로 png파일이 종료되었음을 표시 

 

 

CRC (Cyclic Redundancy Check) 

- 각 청크의 끝 CRC-32(4바이트) 

- CRC 는 청크의 타입 및 데이터 필드에 대해 계산됨 

- 오류 검출을 위해 사용됨 

 


JPG

 

 

확장자 변경 시에도 파일 시그니처는 변하지 않는다