Guid Partition Table : GPT Header

이번 포스팅에선 GPT 중 GPT Header에 대해 알아볼 것이다. GPT Header는 LBA 1에 위치한 데이터 구조체로 Primary Partition Table 영역 중 맨 앞에 위치한다.

gpt structure.png

Primary Partition Table에는 GPT Header 뒤에 128개의 테이블 엔트리가 위치하고 있다. 이전에 설명한 것과 같이 LBA는 Sector Size와 동일한 512바이트를 가지며 각각 다음과 같은 정보를 가진다.

각 정보를 토대로 실제 디스크에서 확인해보겠다.

Gpt header

GPT는 EFI 표준과 함께 등장한 개념이다보니 인텔이 제정한 표준을 따른다. 그로 인해 스펙 문서에 정의된 구조체가 디스크에 쓰여질 땐 항상 리틀-엔디안으로 작성한다.
이제 각 항목을 매치하여 값을 확인해보겠다. 이 과정에선 본 저자가 만든 도구를 활용하였다.

gpt parser - https://github.com/n0fate/raw/blob/master/gpt_parser.py

Gpt parser1

각 요소는 다음과 같이 해석된다.

위 예제와 같이 GPT 헤더를 분석하면, 헤더의 CRC32 체크를 통해 무결성을 확인(CRC32 자체가 완벽할 순 없지만)할 수 있으며, 데이터 작성이 가능한 공간을 확인하고, 백업 파티션 테이블의 위치와 디스크 GUID, 파티션 엔트리의 시작 위치를 파악할 수 있다.

파티션 위치를 파악했으므로, 다음 포스팅에선 파티션 엔트리 분석을 통해 실제 각 파티션 영역의 정보를 파악해보겠다. :)

n0fate's Forensic Space :)