둘둘리둘둘리둘둘리둘둘리둘둘리둘
Partition Table Entry와 FAT16 BR구조 본문
- 볼륨 부트 레코드: 파티션되지 않은 기억 장치의 첫 섹터 또는 파티션된 기억 장치의 개별 파티션의 첫 섹터를 말한다. 파티션 또는 해당 장치에 설치된 운영 체제나 독립형 프로그램을 불러오는 코드를 포함할 수도 있다. 부트 섹터를 사용하려면, 2바이트 16진수 0xAA55 (부트 섹터 서명)가 섹터 맨 끝에 존재해야 한다. 그렇지 않은 경우에는 바이오스나 MBR 코드는 오류 메시지를 보고하고 운영 체제의 부트스트랩 과정을 중단한다.
출처 : 위키백과(http://ko.wikipedia.org/wiki/%EB%B6%80%ED%8A%B8_%EC%84%B9%ED%84%B0)
VBR(Volume Boot Record)또는 PBR(Partition Boot Record)라고 한다.
이 VBR의 시작주소(Partition의 시작주소)는 MBR(Master Boot Record)의 Partition Table Entry를 보면 알수 있다.
Partition Table Entry의 위치
Partition Table Entry 1(16Byte): 0x01BE~0x01CD
Partition Table Entry 2(16Byte): 0x01CE~0x01DD
Partition Table Entry 3(16Byte): 0x01DE~0x01ED
Partition Table Entry 4(16Byte): 0x01EE~0x01FD
Partition Table Entry의 구조
0x01B0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Boot Flag |
|
0x01C0 |
Starting CHS Address |
Part. Type |
Ending CHS Address |
Starting LBA Address |
Size In Sector |
|
|
Boot Flag: 부팅가능 여부, 부팅가능(0x80), 부팅 불가(0x00)
Starting CHS Address: CHS주소 지정 방식으로 파티션 시작섹터의 위치 지정, LBA방식을 주로 사용하여 이필드를 설정하지 않아도 크게 상관없음
(CHS주소 지정 방식: Cylinder-Head-Sector, 물리적인 디스크위치를 나타내기위한 주소방식)
Partition Type: 파티션 종류를 표시
0x00: Empty
0x05:
0x06: FAT16
0x07: NTFS
0x0C: FAT32
0x0F: Extended Partition
0x82: Linux Swap Partition
0x83: Linux Partition
Ending CHS Address: CHS주소 지정방식으로 파티션의 마지막 섹터의 위치 지정
Starting LBA Address: LBA주조 지정방식으로 파티션의 시작섹터의 번호 지정, 섹터번호는 0번부터 시작함
Size in Sector: 파티션의 용량을 섹터의 개수로 표현(LBA방식)
HxD를 이용하여 가상머신의 하드디스크를 열어본모습
(HxD Download : http://mh-nexus.de/en/downloads.php?product=HxD)
실습환경: XP에서 Primary Partition 3개를 차례대로 FAT, FAT32, NTFS방식으로 포맷
첫번째 Partition Table Entry를 통해 첫번째 파티션은 FAT16방식이며 63(0x03F) Sector 부터
0x201C84개의 Sector를 가지고있음을 알 수 있다.
Sector의 크기는 512Byte이므로 2104452(0x201C84) x 512 = 1,077,479,424 Byte(1GB)
FAT16방식의 VBR구조(62 Byte)
Jump Boot Code
FAT12/16 -> EB3C90
FAT32 -> EB5890
NTFS -> EB5290
OEM Name
MSWIN4.1 또는 MSDOS5.0
Byte Per Sector
Sector의 크기
Sector Per Cluster
클러스터를 구성하는 섹터의 갯수
클러스터의 크기: Byte Per Sector x Sector Per Cluster
Reserved Sector Count
Reversed Sector 갯수
예약공간, BR도 예약공간에 포함됨, BR은 예약공간의 첫번째 섹터
FAT16 -> 1
FAT32 -> 32
FAT Count
FAT의 갯수 보통 2임
Root Directory Entry Count
Root Directory Etry항목을 몇개로 할것인지 나타냄
Total Sector 16
볼륨의 총 섹터 수
0xFFFF 이상 -> Total Sector 32 사용, Total Sector 16은 0
0xFFFF 이하 -> Total Sector 16 사용, Total Sector 32는 0
Media Type
0xF8(플로피 디스크 제외)
FAT Size 16
FAT영역의 섹터 수
Sector Per Track
트랙당 섹터 수, 사용하지 않음
Head Count
헤드의 수, 사용하지 않음
Hidden Sector
볼륨 앞에 숨겨진 섹터의 수(MBR을 비롯한 볼륨으로 사용되지 않는 섹터의 수), 사용하지 않음
Total Sector 32
볼륨 총 섹터의 수, FAT32는 반드시 이항목을 사용
Drive Number
드라이브 번호이며 보통 1, 사용하지않음
Reserved1
항상 0이어야 한다, 사용하지 않음
Boot Signature
BR항목이 확장되어 뒤에 항목이 더 있음을 의미, 항상 0x029
Volume ID
볼륨 고유번호, 임의로 생성
Volume Label
초기값: [NO NAME ]
File System Type
파일 시스템의 종류
실습
위의 Partition Table Entry를 통해 알아낸 Partition1의 시작 섹터 63(0x03F)
파일 저장방식은 FAT32와 다를게 없고, FAT16은 거의 사용하지 않는다.
저장방식이나 파일 복구등은 여기(FAT32의 저장방식과 파일 복구)에서!
'Windows' 카테고리의 다른 글
PE header관련 구조체 (0) | 2015.10.17 |
---|---|
PE 파일 구조 - 2 (0) | 2015.10.13 |
PE 파일 구조 - 1 (0) | 2015.10.13 |
FAT32의 저장방식 (0) | 2014.06.25 |
FAT32 구조 (0) | 2014.06.24 |