티스토리 뷰

 

일단, 첫 포스팅을 동아리 과제로 쓰게 되었다. PNG 파일구조에 대해 공부하게 된 이유는 간단하다.  ASCII 아트를 만들고 싶었다.

뭐.. 하다보니깐 결국 PNG 파일 구조가 보고서의 주 내용이 되었지만, 나름 공부한 것에 대해 만족하는중이다.

참고로 이 포스팅들은 주관적이나, 조사한 내용을 바탕으로 이루어져있다. 오타와 잘못된 정보 지적은 환영한다.그럼 거두절미하고 바로 본론으로 넘어가겠다.

 

일단 PNG 파일 구조는 파일 시그니처와, 다양한 청크들의 집합으로 이루어져있다.

파일 시그니쳐는 "이 다음부터 나오는 데이터는 어떤 포맷(형식)을 따른다" 라는 것을 알려준다.  즉, 이 파일은 ~하게 해석해야 한다는 것을 알려주는 것이다.


파일 시그니쳐는 8byte로 이루어져 있으며, 파일 포맷마다 모두 다르다.

PNG 파일의 시그니처는 [89 50 4E 47 0D 0A 1A 0A]이다. 그중 [89 50 4E]를 아스키로 표현하면 PNG 라는 것을 알 수 있다.


다음은 한 PNG 파일을 010 에디터로 뜯었을 때의 사진이다.


<사진 1: PNG 파일 시그니처>


옆의 아스키 코드 값에서 PNG를 확인 할 수 있다.

 

청크(Chunk)는  공통된 데이터를 가지고 있는 데이터들의 집합을 일컫는다. 

중요 청크는 첫 글자가 대문자로 되어있으며, 보조 청크는 첫 글자가 소문자로 되어있다.

중요 청크에는 IHDR, IDAT, PLTE, IEND 청크가 있다.


이는 다음 포스팅에서 더 자세히 알아보기로 하자. 청크들은 다음과 같은 기본 형식으로 이루어져있다.


Length는 Chunk Data의 길이를 말하며, 크기는 4byte이다. 

Chunk Type은 청크의 타입, IHDR같은것을 말한다. 보면 알겠지만, ASCII 코드로 이루어져있으며, 4byte이다.

Chunk Data는 실제 데이터가 들어간다. Chunk Data는 Length byte이다. 가변길이를 가지며, 실제로 데이터가 들어가는 부분이다.

CRC는 Cyclic Redundancy Check(순환 중복 검사)의 약자로 데이터의 오류가 있는지 확인하는것이다.


<사진 2: 010 에디터에서 본 청크의 구조>


위 사진을 보면 모든 청크가 length, type, data, crc로 이루어진것을 알 수 있다. 열들은 각각 데이터 설명, 데이터의 값, 데이터 위치, 바이트 수를 의미한다. 위의 사진이 위의 설명과 모두 동일하다는것을 알 수 있다.

 

다음 포스팅에서는 중요 청크들의 구조를 알아보도록 하자.

'Reversing > PNG 파일 구조' 카테고리의 다른 글

[PNG] PNG 파일 구조의 이해 - 2  (2) 2018.08.23
  • 네이버 블러그 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 트위터 공유하기
  • 트위터 공유하기
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함