디지털 포렌식 #17 (PNG)

0

디지털포렌식

목록 보기
84/115

http://ctf.no-named.kr:1234/challenges

1번 문제를 풀면서, PNG 구조에 대해서 공부했다.

PNG
헤더 시그니처 : 89 50 4E 47 0D 0A 1A 0A
푸티지 : 49 45 4E 44 AE 42 60 82

구조 : N개의 Chunk들로 구성

Chunk의 구조는 다음과 같다.

{
Length (4 byte),
Chunk Type (4 byte),
Chunk Data (length byte),
CRC (4byte)
}

  • CRC와 관련한 코드는 별도의 게시물로 작성해두었음.

이러한 Chunk들 중, PNG 파일에 필수적으로 존재해야 하는 Chunk는 IHDR, IDAT, IEND가 있다.
하나라도 없으면, 파일이 열리지 않는다. 각각의 Chunk들이 식별되지 않아서 이미지 자체가 보이지 않는다.

IHDR : 49 48 44 52

IHDR은 말 그대로 헤더 즉 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
}

  • 49 48 44 52 앞에, Length인 0x 0D가 있음을 확인할 수 있다.

  • CRC는 IHDR이 끝나는 byte 다음부터 4개의 byte, 즉 여기서는 0x01897642 이다.

  • IHDR의 데이터 길이는 항상, 13byte길이로 고정되어 있다.

  • Width, Height가 적절하게 맞춰져 있지 않다면, 그림은 식별할 수 없게 보인다.

    이렇게.

CRC의 값을 알고 있다면, Width,Height 값의 역산이 가능하다.

  • Bit depth & Color Type : 각각 하나의 채널이 몇 bit로 구성될지 결정 / 이미지의 색상 구성
PNG Color TypeValueBit depth
Gray Scale01,2,4,8,16Gray Scale을 따른다
Truecolor28,16RGB를 따른다.
Indexed-color31,2,4,8Phalette를 따른다다.
Gray Scale with alpha48,16Gray scale + alpha를 따른다.
Truecolor with alpha68,16RGB + Alpha를 따른다.
  • Compression method
    표준 압축 방식은 0: DEFLATE 유일

  • Filter method
    표준으로 필터링 방식은 : 0 유일

  • Interlace method
    이미지 로딩이 완료되기 전, 해상도가 낮은 이미지를 보여줌.
    표준으로 정의 방식 : 0 (No interlace), 1 (Adam7 interlace) 유이


IDAT : 49 44 41 54
IDAT는 실제 이미지를 구성하는 데이터가 저장된다.

꼭 1개만 가지는 건 아니고, 여러개의 IDAT를 가질 수 있다. 1개의 IDAT당 65536 byte의 크기를 지닌다. 하지만, 전체 이미지는 압축되어 IDAT에 "나누어"담기기 때문에, 덩어리로 저장되는 것이 아니라 골고루 나뉘어 저장된다. 따라서 1개의 IDAT가 없으면 복구 불가능.


IEND : 49 45 4E 44
IEND에는 파일의 끝을 알려준다. (푸티지 시그니처)


https://joseoyeon.github.io/posts/png-%EA%B5%AC%EC%A1%B0/

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

https://leemon.tistory.com/38

https://hec-ker.tistory.com/136

https://eece-labs.tistory.com/7?category=794291

0개의 댓글