FAT32 파티션 복구

 

섹터               물리적 디스크 최소 단위, 512byte

클러스터         섹터 그룹 단위 4096byte(512byte * 8)

 

  MBR              512 byte 

  • 부트코드          446byte         부팅에 필요한 코드 정보  
  • 파티션 테이블    64byte           주 파티션 4개에 대한 정보, 각각 파티션은 16byte로 구성
  • 시그니처            2byte            55   AA

80 01 01 00 0B FE 3F F4 3F 00 00 00 C0 3F 3C  (446byte 이후 파티션 테이블)

 

1byte   부트플래그             80          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        01 01 00    현재 사용 x

1byte   파일 시스템 타입     0B           (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           FE 3F F4     사용 x

4byte   LBA(VBR) 시작주소  3F 00 00 00      리틀 엔디안 -> 00 00 00 3F = 63 섹터

4byte   총 섹터 개수           C0 3F 3C 00      리틀 엔디안 -> 00 3C 3F  C0 = 3948480개

                                                             512 * 3,948,480 = 2,021,621,760byte 개

 

 

 

 

 

63 섹터 쓸데 없는 값으로 채워져 있다. 여기에 +6 한곳이 백업본이 존재하는 곳이다.

 

69 섹터에 있는 복구값으로 변경해 저장하면 복구된다.

 

복구가 된것을 확인.

                                          

 


다중파티션 복구

파티션 시작부분

 

1. 첫번째 파티션 분석

 

00 04 01 00 07 03 20 32 80 00 00 00 00 90 01 00

 

1byte   부트플래그             00          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        04 01 00    현재 사용 x

1byte   파일 시스템 타입     07          (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           03 20 32     사용 x

4byte   LBA(VBR) 시작주소 80 00 00 00    리틀 엔디안 -> 00 00 00 80 = 128 섹터

4byte   총 섹터 개수          00 90 01 00      리틀 엔디안 -> 00 01 90 00 = 102400개

                                                             512 * 102,400 = 52,428,800byte 개

 

2. 두번째 파티션 분석

 00 04 01 32 07 03 20 64 80 90 01 00 00 90 01 00

1byte   부트플래그             00          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        04 01 32    현재 사용 x

1byte   파일 시스템 타입     07          (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           03 20 64    사용 x

4byte   LBA(VBR) 시작주소 80 90 01 00    리틀 엔디안 -> 00 01 90 80 = 102,528‬ 섹터

4byte   총 섹터 개수          00 90 01 00      리틀 엔디안 -> 00 01 90 00 = 102,400‬개

                                                             512 * 102,400 = 52,428,800byte 개

 

3. 세번째 파티션 분석

00 04 01 64 07 03 20 96 80 20 03 00 00 90 01 00

1byte   부트플래그             00          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        04 01 64    현재 사용 x

1byte   파일 시스템 타입     07          (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           03 20 96    사용 x

4byte   LBA(VBR) 시작주소 80 20 03 00    리틀 엔디안 -> 00 03 20 80 = 204,928‬ 섹터

4byte   총 섹터 개수          00 90 01 00      리틀 엔디안 -> 00 01 90 00 = 102,400‬개

                                                             512 * 102,400 = 52,428,800byte 개

 

4. 네번째 파티션 분석

 00 04 01 96 05 03 60 FE 80 B0 04 00 00 40 0B 00

1byte   부트플래그             00          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        04 01 96    현재 사용 x

1byte   파일 시스템 타입     05          (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           03 60 FE    사용 x

4byte   LBA(VBR) 시작주소 80 B0 04 00    리틀 엔디안 ->00 04 B0 80 = 307,328‬‬ 섹터

4byte   총 섹터 개수          00 40 0B 00      리틀 엔디안 -> 00 0B 40 00= 737,280 개

                                                             512 * 737,280 = 377,487,360byte 개

 

 

 

확장파티션 위치 -> 307328 섹터 위치

5. 확장 파티션 분석 1번째

00 08 01 96 07 07 20 C8 80 00 00 00 00 90 01 00

 

1byte   부트플래그             00          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        08 01 96    현재 사용 x

1byte   파일 시스템 타입     07          (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           07 20 C8    사용 x

4byte   LBA(VBR) 시작주소 80 00 00 00    리틀 엔디안 ->00 00 00 80 = 128‬‬ 섹터

4byte   총 섹터 개수          00 90 01 00      리틀 엔디안 -> 00 01 90 00= 102,400 개

                                                             512 * 102,400 = 52,428,800‬byte 개

 

네번째 파티션의 위치 = 현재 VBR 위치 + 128 = 307328 + 128 = 307456

 

6. 확장 파티션 분석 2번째

00 08 01 C8 05 0B 60 FC 80 90 01 00 80 A0 09 00

 

1byte   부트플래그             00          (0x80: 부팅 가능, 0x00 : 부팅 불가능)

3byte   CHS 시작 주소        08 01 C8    현재 사용 x

1byte   파일 시스템 타입     05          (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)

3byte   CHS 끝 주소           0B 60 FC    사용 x

4byte   LBA(VBR) 시작주소 80 90 01 00    리틀 엔디안 ->00 01 90 80= 102,528‬‬ 섹터

4byte   총 섹터 개수          80 A0 09 00      리틀 엔디안 -> 00 09 A0 80= 630,912개

                                                             

 다섯번째 파티션 정보의 위치 = 현재 VBR 위치 + 102528 = 307328 + 102528 = 409856

 

7. 다섯번째 파티션

00 0C 01 C8 07 0B 60 FC 80 00 00 00 00 A0 09 00

파티션 부트 플래그(1byte) 00
CHS 시작 주소(3byte) 0C 01 C8 
파일시스템 타입(1byte) 07 NTFS
CHS 끝 주소(3byte) 0B 60 FC
LBA/VBR 시작 주소(4byte) 80 00 00 00 00 00 00 80 -> 128
총섹터 개수(4byte) 80 A0 09 00 00 09 A0 80 -> 630912
용량 512 x 630912 = 323026944

 - 다섯번째 파티션 위치 = 현재 VBR 위치 + 128 = 409856 + 128 = 409984

 


GPT 파티션

 

- 2TB 이상의 파티션을 구성할 경우 사용하는 방식

- GPT 디스크로 부팅할 경우에는 BIOS 방식이 아닌 EFI 방식을 사용해야 한다.

- 이론적으로는 8ZB 까지 가능하지만 , 실제는 18EB로 제한되어 있음

- 파티션 엔트리를 128byte를 사용하며,  최대 128개 파티션 구성할 수 있음

- GPT는 1번 섹터(Primary GPT)에 GPT 헤더(92 byte) 

           2번 섹터(Secondary GPT)에 파티션 정보(각각 128byte)

 

00 FE FF FF EE FE FF FF 01 00 00 00 AF C2 E7 0E

 

00                    부트 플래그

EE                    파일 시스템 유형        0xEE       GPT(EFI 디스크)

01 00 00 00       LBA 시작 주소           리틀 엔디안 -> 00 00 00 01 = 1 섹터

 

 

GPT 헤더 (92byte)

 

Signature(8Byte)

 영역

 내용

 45 46 49 20 50 41 52 54

 'EFI PART' 기록

 

Revision(4Byte) 

 영역

 내용

00 00 01 00

버전 1.0

 

Header 크기(4Byte) 

 영역

 내용

5C 00 00 00

 GPT 헤더 크기(92byte)

 

CRC32 of Header(4Byte) 

 영역

 내용

16 88 44 50

 Header 시작부터 끝에 대한 무결성 체크

 

Reserved(4Byte) 

 영역

 내용

00 00 00 00

 예약된 영역이며 사용하지 않는다.

 

Current LBA(8Byte) 

 영역

 내용

01 00 00 00 00 00 00 00

현재 LBA 주소

 

Backup LBA(8Byte) 

 영역

 내용

AF C2 E7 0E 00 00 00 00

GPT Header 정보를 백업한 Sector 위치

 

First usable LBA for Partition(8Byte) 

 영역

 내용

22 00 00 00 00 00 00 00

파티션 구성을 할 수 있는 영역의 시작 위치

Primary Partition Table Last LBA + 1

 

Last usable LBA for Partition(8Byte) 

 영역

 내용

8E C2 E7 0E 00 00 00 00

파티션 구성을 할 수 있는 영역의 마지막 위치

Secondary Partition Table Last LBA - 1

 

Disk GUID(16Byte)

 영역

 내용

E2 83 B4 33 56 08 73 4E A8 C9 96 BC 37 64 81 69

 장치 UUID 번호

 

Partition Entries Starting LBA(8Byte) 

 영역

 내용

02 00 00 00 00 00 00 00

Partition Entry 시작 위치

각 파티션 정보가 저장되어 있음

 

Number of Partition Entries(4Byte) 

 영역

 내용

80 00 00 00

지원하는 GPT Partition Entry 개수

 

Size of Partition Entry(4Byte) 

 영역

 내용

80 00 00 00

GPT Partition Entry 크기(128Byte)

대부분 128Byte 사용

CRC32 of Partition Array(4Byte) 

 영역

 내용

FC B9 1A E4

파티션 CRC32

 

 

Reserved(420Byte) 

 영역

 내용

 

전부 0

0x25C ~ 0x3FF

사용하지 않는 영역


Secondary GPT Sector(128byte)

Partition Type GUID(16Byte) 

 영역

 내용

28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B

파티션 타입 고유 번호

파티션 파일 시스템과 OS/서비스 확인 가능

 

Unique Partition GUID(16Byte) 

 영역

 내용

2B 80 26 60 4D AD 05 47 B9 B1 BF 81 BD D2 CA C7

파티션마다 할당하는 고유한 값을 저장

 

First LBA(8Byte) 

 영역

 내용

28 00 00 00 00 00 00 00

파티션 시작 주소

(0x28 = 40)

 

Last LBA(8Byte) 

 영역

 내용

27 40 06 00 00 00 00 00

파티션 마지막 주소

(0x64027 = 409639)

 

Attribute Flags(8Byte) 

 영역

 내용

00 00 00 00 00 00 00 00

파티션 속성을 나타내는 값

 

Partition Name(72Byte) 

 영역

 내용

45 00 46 00 49 00 20 00 53 00 79 00 73 00 74 00 65 00 6D 00 20 00 50 00 61 00 72 00 74 00 69 00 74 00 69 00 6F 00 6E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

0x438 ~ 0x47F

파일 시스템 이름

UTF-16 사용

 

 

'디지털 포렌식' 카테고리의 다른 글

윈도우 포렌식  (0) 2019.07.23
침해사고포렌식  (0) 2019.07.18
네트워크 포렌식  (0) 2019.07.15
안티 포렌식  (0) 2019.07.11
디지털 포렌식 개요  (0) 2019.07.11

+ Recent posts