MBR과 EBR 분석
Updated:
디스크의 첫 번째 섹터에는 MBR이 존재한다. 이번 글에서는 MBR과 EBR을 분석하여 파티션 정보를 얻는 방법을 기술한다.
- MBR 분석
- EBR #1 분석
- EBR #2 분석
- EBR #3 분석
- 전체구조
- 특이사항
1. MBR 분석
MBR의 구조는 아래와 같다.
이에 따라, 이미지 파일(.dd)을 열었을 때 Partition table 은 아래 그림에서 선택된 부분이다.
(HxD 에서 파일을 열 때, 상단의 Extras - Open disk image 로 열어야, sector 단위로 줄이 그어져 보기 편하다.)
Partition table 의 구조는 아래와 같다.
Boot Flag
: 0x80(부팅 파티션), 0x00Parition Type
: 07(NTFS), 05(EBR) 등 값에 따라 파티션이 어떤 파일시스템인지 알려준다.Starting LBA Address
,Size in Sector
: Little Endian 이고 sector 단위 이다.(usually 1 sector is 512 bytes)LBA
: Logical Block Addressing (물리적 절대 주소가 아니라, 상대적 주소라고 생각하면 된다.)
이에 따라, MBR 내의 파티션 테이블 정보를 해석하면 다음과 같다.
Partition #1
- Boot Flag = 00, Starting CHS Address = 02 03 00, Partition type = 07(NTFS), Ending CHS Address = 8E 0C 02, Starting Address = 00 00 00 80, Size = 00 00 A0 00
Partition #2
- Boot Flag = 00, Starting CHS Address = 8E 0D 02, Partition type = 07(NTFS), Ending CHS Address = 1B 16 05, Starting Address = 00 00 A0 80, Size = 00 00 A0 00
Partition #3
- Boot Flag = 00, Starting CHS Address = 1B 17 05, Partition type = 07(NTFS), Ending CHS Address = A7 20 07, Starting Address = 00 01 40 80, Size = 00 00 A0 00
next EBR
- Boot Flag = 00, Starting CHS Address = 02 03 00, Partition type = 05(DOS extended partition), Ending CHS Address = 8E 0C 02, Starting Address = 00 01 E0 80, Size = 00 02 10 00
MBR | Start | Size |
---|---|---|
Partition #1 | 00 00 00 80 sectors | 00 00 A0 00 |
Partition #2 | 00 00 A0 80 sectors | 00 00 A0 00 |
Partition #3 | 00 01 40 80 sectors | 00 00 A0 00 |
next ebr | 00 01 E0 80 sectors (=0x3C10000bytes) | 00 02 10 00 sectors (=0x4200000bytes) |
2. EBR #1 분석
- Partition #4
- Boot Flag = 00, Starting CHS Address = 00 03 02, Partition type = 07(NTFS), Ending CHS Address = 02 0C 8E, Starting Address = 00 00 00 80, Size = 00 00 A0 00
- EBR #1
- Boot Flag = 00, Starting CHS Address = 02 0D 8E, Partition type = 05(DOS extended partition), Ending CHS Address = 05 18 1D, Starting Address = 00 00 A0 80, Size = 00 00 A0 80
EBR #1 | Start | Size |
---|---|---|
partition#4 | 00 00 00 80 sectors (=0x10000 bytes) | 00 00 A0 00 sectors (=0x1400000 bytes) |
next ebr | 00 00 A0 80 sectors (=0x1410000 bytes) | 00 00 A0 80 sectors (=0x1410000 bytes) |
= ebr#1 physical starting address + parition#4 starting LBA address
= 0x3C10000 + 0x10000 = 0x3C20000
(즉, partition#4 의 LBA 는 ebr#1 의 physical 주소로부터의 상대적 주소이다.)
3. EBR #2 분석
= MBR 의 next ebr address + ebr#1 next ebr address
= 0x3C10000+0x1410000 = 0x5020000
- Partition #5
- Boot Flag = 00, Starting CHS Address = 00 03 02, Partition type = 07(NTFS), Ending CHS Address = 02 0C 8E, Starting Address = 00 00 00 80, Size = 00 00 A0 00
- EBR #2
- Boot Flag = 00, Starting CHS Address = 05 19 1D, Partition type = 05(DOS extended partition), Ending CHS Address = 08 26 2E, Starting Address = 00 01 41 00, Size = 00 00 C0 80
EBR #2 | Start | Size |
---|---|---|
partition#5 | 00 00 00 80 sectors (=0x10000 bytes) | 00 00 A0 00 sectors (=0x1400000) |
next ebr | 00 01 41 00 sectors (=0x2820000 bytes) | 00 00 C0 80 sectors (=0x1810000) |
= ebr#2 physical starting address + parition#5 starting LBA address
= 0x5020000 + 0x10000 = 0x5030000
(즉, partition#5 의 LBA 는 ebr#2 의 physical 주소로부터의 상대적 주소이다.)
4. EBR #3 분석
= MBR 의 next ebr address + ebr#2 next ebr address
= 0x3C10000+0x2820000 = 0x6430000
※ MBR 의 next ebr address + ebr#1 next ebr address + ebr#2 next ebr address 가 아님에 유의해야 한다.
Partition #6
- Boot Flag = 00, Starting CHS Address = 00 03 02, Partition type = 07(NTFS), Ending CHS Address = 03 0E 11, Starting Address = 00 00 00 80, Size = 00 00 C0 0
EBR #3 | Start | Size |
---|---|---|
partition #6 | 00 00 00 80 (=0x10000) | 00 00 C0 0 (=0x1800000) |
= ebr#3 physical starting address + parition#6 starting LBA address
= 0x6430000 + 0x10000 = 0x6440000
파티션 테이블 내 next ebr 이 더 이상 없기 때문에, partition#6 가 마지막이다.
5. 전체 구조
MBR |
---|
Partition #1 |
Partition #2 |
Partition #3 |
EBR #1 |
Partition #4 |
EBR #2 |
Partition #5 |
EBR #3 |
Partition #6 |
6. 특이사항
MBR의 next ebr size (0x4200000)는 EBR 들이 가리키는 partition#4, partition#5, partition#6 들의 합(0x1400000 + 0x1400000 + 0x1800000) 보다 같거나 크다.
Comments