Digital Forensic Study

PNG 구간 정리 (약식) _ (DFC 스터디)

수분_ 2023. 8. 1. 13:11

파일 시그니처는 보통 헤더 시그니처와 푸터 시그니처가 있습니다. 위치는 말 그대로 헤더는 맨 위, 푸터는 맨 아래에 위치하고 있고 PNG 파일구조는 파일 시그니처와 여러 청크들로 구성되어있습니다.

 

PNG 헤더 시그니처는 89 50 4E 47 0D 0A 1A 0A 이며 푸터 시그니처는 49 45 4E 44 AE 42 60 82입니다. 8바이트이며 50 4E 47은 아스키 코드로 PNG를 의미합니다.

 

또한 대표적인 PNG 청크들은 IDHR, PLTE, IDAT, IEND가 있습니다.

 

IHDR 청크는 이미지 헤더 라는 뜻으로 PNG의 기본정보를 담고 있고 길이는 항상 13바이트입니다. 그리고 헤더 시그니처 바로 뒤에 붙습니다.

 

IDAT 청크는 이미지 데이터로 실제 이미지 데이터가 포함되어있습니다. 또한 IDAT는 여러 번 들어갈 수 있습니다.

 

IEND 청크는 이미지 엔드라는 뜻으로 이미지 파일의 끝을 의미하는 청크입니다.

 

PLTE 청크는 팔레트 라는 뜻으로 색 공간을 표시하는 청크입니다.

 

 

제가 PNG 이미지를 여러개 받아 010 Editor로 삭제, 추가 해본 결과

 

삭제해도 되는 구간은 IEND 전체와 IDAT 마지막에 CRC부분입니다. 삭제해도 정상적으로 이미지가 나왔습니다. 다른 청크의 CRC는 삭제 시에 이미지가 손상되었습니다.

 

또한 추가해도 되는 구간은 IEND의 뒤, , IDAT CRC 앞 부분입니다. 다른 파일 시그니처를 각 구간에 추가해본 결과 위의 구간에서 추가하면 용량만 늘고 이미지가 정상적으로 출력되었습니다. 그리고 헤더 시그니처 앞 즉 파일 시그니처 맨 앞에 추가하게 되면 추가한 파일 시그니처 이미지가 출력 되었습니다. (당연한 부분이라고 생각합니다.)

 

 

 

 

-----

 

 

 

인코딩(암호화) <--> 디코딩(암호화 해독(복호화))

1. PNG 시그니처
89 50 4E 47 0D 0A 1A 0A

89 - 파일 시작
50 4E 47 - PNG
0D - 맨 앞으로
1A - 문장의 끝
0A - 줄바꿈

2. IHDR - image header
4 byte width 너비
4 byte height 높이
1 byte bdp (bit depth) 비트의 양 (보통은 8바이트)   8이 아니면 의심해볼 것   (문제 풀 시 0,2,3,4,6 대입 해보기)
1 byte colortype 색의 유형 (보통은 2바이트)          2가 아니면 의심해볼 것  (문제 풀 시 0,2,3,4,6 대입 해보기)
1 byte compression method 압축 메소드  (png는 DELETE라는 압축 알고리즘 사용 그러므로 보통 00이다. 아니면 의심)
1 byte filter method 필터링 메소드 (보통은 00이다. 00 아니면 의심해 볼 것)
1 byte interlace method 인터레이스 메소드 (0 or 1)
4 byte CRC

3. IDAT - image data
이미지 데이터 영역
마지막 부분은 CRC 백업 데이터 부분이다. (삭제 가능)
CRC

4. IEND - image end
이미지의 끝을 알림
어디든 추가 삭제 가능
보통은 IEND뒤에 추가.

PNG 에서는 CRC32 알고리즘 사용

 

 

 

_23.05.31