본문 바로가기

Forensics

PNG 파일 구조

png 파일

- 포터블 네트워크 그래픽스 (Portable Network Graphics; PNG)

- 비손실 그래픽 파일 포맷

 

 

 

 

 

파일 시그니처

- 헤더 시그니처: 89 50 4E 47 0D 0A 1A 0A (8 bytes)

   - 50 4E 47 → PNG (ASCII)

- 푸터 시그니처: 49 45 4E 44 AE 42 60 82 (8 bytes)

 

 

 

 

 

파일의 청크

- 파일 시그니처와 함께 이미지에 대한 정보를 담고 있음

- 청크는 그 자신을 중요 또는 보조로 선언

- PNG 파일에 반드시 포함되어야 하는 청크: IHDR, IDAT, IEND

 

 

 

 

 

청크의 구조

{
Length (4 bytes), #Chunk Data의 길이
Chunk Type (4 bytes), #청크의 타입, 아스키 코드로 이루어짐 (ex. IHDR, IDAT, IEND ...)
Chunk Data (Length bytes), #실제 데이터, 가변 길이를 가짐
CRC (4 bytes) #순환 중복 검사의 약자, 데이터 오류 유무를 확인하는 것
}

 

 

 

 

 

IHDR

- PNG 파일의 기본 정보를 담고 있음

- PNG 파일의 가장 앞에 위치하는 청크

{
Length: 00 00 00 0D (4 bytes),
Chunk Type: IDHR (4 bytes),
Chunk Data (13 bytes), #IHDR의 데이터 길이는 항상 13
    {
    Width (4 bytes), #이미지 가로
    Height (4 bytes), #이미지 세로
    Bit depth (1 byte), #한 픽셀이 차지하는 비트의 양
    Color Type (1 byte), #색의 유형을 숫자로 나타냄
    Compression method (1 byte), #Deflate
    Filter method (1 byte), #Adaptive Filtering
    Interlace method (1 byte) #No interlace, Adam 7 interlace
    }
CRC (4 bytes)
}

 

 

PNG image type Color type Allowed bit depths interpretation
Grayscale 0 1, 2, 4, 8, 16 그레이 스케일 값을 가짐
True color 2 8, 16 RGB 값을 가짐
Indexed color 3 1, 2, 4, 8 팔레트에 따른 값을 가짐
Grayscale with alpha 4 8, 16 그레이 스케일 값 뒤에 알파 값을 가짐
Truecolor with alpha 6 8, 16 RGB 값 뒤에 알파 값을 가짐

 

 

 

 

 

IDAT

- 실제로 이미지 데이터가 들어가는 부분

- 여러 개의 IDAT 청크를 가질 수 있음

   → 데이터를 스트리밍 방식으로 전송하기 위함

- 모든 IDAT 청크가 있어야 이미지 디코딩이 정상적으로 수행됨

   → PNG가 전체 이미지 데이터를 한 번에 압축한 뒤 여러 IDAT 청크에 나누어 담는 방식 사용

{
Length (4 bytes),
Chunk Type: IDAT (4 bytes),
Chunk Data (Length bytes),
    {
    Filtered, Compressed Data #원시 이미지 데이터의 압축률을 높이기 위하여 데이터를 가공하는 작업
    .
    .
    }
CRC (4 bytes)
{

 

 

 

 

 

IEND

- 이미지 파일의 끝을 표시하는 청크

{
Length: 00 00 00 00 (4 bytes),
Chunk Type: IEND (4 bytes),
Chunk Data (0 byte), #데이터를 담는 목적으로 사용하지 않으므로 항상 0
CRC (4 bytes)
}

 

 

 

 

 


이 png 이미지로 파일 분석을 한 번 해보겠다.

(스윙 6월 보안 뉴스로 제작한 카드 뉴스 표지 ^.^)

 

 

 

 

 

 

 

png 파일의 헤더 시그니처: 89 50 4E 47 0D 0A 1A 0A

 

저 중 50 4E 47 → PNG

 

 

 

 

 

 

Length: 00 00 00 0D

 

 

 

 

 

 

IHDR

 

 

 

 

 

 

Width

 

 

 

 

 

 

Height

 

 

 

 

 

 

Bit depth

 

 

 

 

 

 

Color Type

 

 

 

 

 

 

Compression method

 

 

 

 

 

 

Filter method

 

 

 

 

 

 

Interlace method

 

 

 

 

 

 

CRC

 

 

 

 

 

IDAT

 

 

 

 

 

IDAT를 검색해보았다.

 

 

총 25개의 검색 결과가 나옴

이 파일에는 25개의 IDAT 청크가 존재한다.

 

 

 

 

 

 

Length

 

 

 

 

 

 

IEND

 

 

 

 

 

 

푸터 시그니처

'Forensics' 카테고리의 다른 글

[ctf-d] GrrCON 2015 #1  (0) 2022.08.02
ZIP 파일 구조  (0) 2022.07.30
[ctf-d] 이 그림에는 뭔가 좀 수상한...  (0) 2022.07.29
[ctf-d] 저는 당신의 생각을 알고 있습니다.  (0) 2022.07.29
[ctf-d] basics  (0) 2022.07.29