Forensic

PNG 파일 구조

Lucvs 2020. 11. 17. 00:23

File Signature

→ 89 50 4E 47 0D 0A 1A 0A

   50 4E 47 → ASCII → PNG

 

Chunk

IHDR (Image Header) : PNG 이미지의 크기, 필터링 방식, 압축 방식 등

{
  Length : 00 00 00 0D (13 byte),
  Chunk Type : IHDR,
  Chunk Data ( 13 byte ),
  {
     Width(4 byte),
     Height (4 byte),
     Bit depth (1 byte),
     Color Type (1 byte),
     Compression method (1 byte),
     Filter method (1 byte),
     Interlace method (1 byte),
  }
  CRC
}

∙ Width & Length : 이미지의 폭과 높이를 지정, 특정 값으로 조작 가능

 Bit Depth : 하나의 채널이 몇비트로 구성될 지를 결정

 Color Type : 이미지의 색상을 어떻게 구성할 것인지를 결정, RGB Color Type 이라면 (R, G, B) 세 개의 채널을 소유

 Compression method : 압축 방식, 0:DEFLATE 단일 방식

 Filter method : 단일 방식 - 0

 Interlace method : 이미지 로딩 전 낮은 해상도를 먼저 보여주기 위하여 사용, 0(No interlace), 1 (Adam7 interlace) 두 가지 방식

 

IDAT (Image Data) : 이미지 데이터가 들어가는 부분, 모든 이미지 데이터가 압축되어 하나의, 혹은 다수의 IDAT Chunk 에 들어가기 때문에, 이미지 디코딩을 위해서는 모든 IDAT Chunk 가 필요

 

IEND (Image End) : 이미지 끝에 들어가는 Chunk로, PNG 파일의 끝을 표현, 데이터를 담고 있지 않으므로 Length = 0

{
  Length : 00 00 00 00 (0 byte),
  Chunk Type : IEND,
  Chunk Data (0 byte),
  CRC
}

 

 

출처

- ko.wikipedia.org/wiki/PNG

- ryanking13.github.io/2018/03/24/png-structure.html