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 |