B1ueJay
FAT 파일 시스템 - (1)예약 영역 본문
File Allocation Table
1976년에 Microsoft의 빌 게이츠가 최초로 구현
MS-DOS에 최초로 사용되었으며 현재 Windows에서도 사용 중
매우 단순한 구조를 가졌으며 가장 널리 사용된 파일 시스템
가볍고 심플해서 휴대성 뛰어남
FAT12
- FAT 파일 시스템의 최초 표준
- 현재 FAT 파일 시스템의 기본 구조
FAT16
- 하드 디스크 지원
- 최대 클러스터 12bit → 16bit
FAT32
- 최대 클러스터 16bit → 32bit
- 32bit 중 4bit는 예약 영역으로 사용(실제 28bit를 이용해서 클러스터 표현)
- 최대 볼륨 크기 2TB 지원
exFAT(Extended FAT)
- 고용량 플래시 메모리 미디어를 위해 개발됨
- UTC 시간표 지원
Structure(구조)
Reserved Area(예약된 영역)
- Boot Sector, FS Information, Boot Strap, More Space 영역별로 이루어져 있음
- FAT12/16 - 1 섹터 사용, FAT32 - 32 섹터 사용
Boot Sector
- FAT 파일 시스템의 첫 번째 자리를 차지하며 크기는 1 섹터(512 바이트)
부트 섹터의 구조는 아래와 같다
형식 |
범위 |
설명 |
|
Bytes | Hex | ||
FAT12/16 | 0 ~ 2 | 0x000 ~ 0x002 | 부트 코드로 점프하려는 명령어 |
FAT32 | |||
FAT12/16 | 3 ~ 61 | 0x003 ~ 0x03D | BIOS Parameter Block(BPB) |
FAT32 | 3 ~ 89 | 0x003 ~ 0x059 | |
FAT12/16 | 62 ~ 509 | 0x03E ~ 0x1FD | 부트 코드와 오류 메시지 저장 |
FAT32 | 90 ~ 509 | 0x05A ~ 0x1FD | |
FAT12/16 | 510 ~ 511 | 0x1FE ~ 0x1FF | 시그니처(0x55 AA) |
FAT32 |
FAT12/16과 FAT32는 공통적으로 첫 3byte는 부트 코드로 점프하기 위한 명령어가 위치해 있다.
이 값은 운영체제가 부팅하는데 필요한 코드를 찾을 수 있도록 컴퓨터에 알려주는 어셈블리 명령어다.
그리고 마지막 2byte는 동일한 시그니처 0x55 AA가 있다.
시그니처(0x55 AA)는 NTFS 파일 시스템의 첫 번째 섹터에서도 같다.
BIOS Parameter Block의 구조는 아래와 같이 이루어져 있다.
[FAT12/16/32 공통]
범위 |
설명 |
|
Bytes | Hex | |
0 ~ 2 | 0x00 ~ 0x02 |
Jump Boot Code 부트 코드로 점프하는 명령어 (기본값: 0xEB5890) |
3 ~ 10 | 0x03 ~ 0x0A |
OEM ID Win95=MSWIN4.0, Win98=MSWIN4.1, Win2000/XP/Vista=MSDOS5.0, Linux=mkdosfs |
11 ~ 12 | 0x0B ~ 0x0C | Bytes per Sector |
13 | 0x0D | Sector per Cluster |
14 ~ 15 | 0x0E ~ 0x0F | Reserved Sector Count - FAT12/16=1, FAT32=32 |
16 | 0x10 |
Number of FAT Tables FAT 영역은 백업을 제공하기 때문에 일반적으로 2개 사용 |
17 ~ 18 | 0x11 ~ 0x12 | Root Directory Entry Count - FAT12/16=512, FAT32=0 |
19 ~ 20 | 0x13 ~ 0x14 | Total Sector 16 - FAT12/16=variable, FAT32=0 |
21 | 0x15 | Media Type |
22 ~ 23 | 0x16 ~ 0x17 | FAT Size 16 - FAT12/16=16, FAT32=0 |
24 ~ 25 | 0x18 ~ 0x19 | Sectors per Track - 32 또는 63 |
26 ~ 27 | 0x1A ~ 0x1B | Number of Heads |
28 ~ 31 | 0x1C ~ 0x1F | Hidden Sectors - 파티션 시작 전 섹터 수 |
32 ~35 | 0x20 ~ 0x23 | Total Sector 32 |
[FAT12/16]
범위 |
설명 |
|
Bytes | Hex | |
36 | 0x024 | Drive Number |
37 | 0x025 | Reserved1 |
38 | 0x026 | Boot Signature |
39 ~ 42 | 0x027 ~ 0x02A | Volume ID |
43 ~ 53 | 0x02B ~ 0x035 | Volume Label |
54 ~ 61 | 0x036 ~ 0x03D | File System Type |
62 ~ 509 | 0x03E ~ 0x1FD | Boot Code and Error Message |
510 ~ 511 | 0x01FE ~ 0x1FF | Signature(0x55 AA) |
[FAT32]
범위 |
설명 |
|
Bytes | Hex | |
36 ~ 39 | 0x024 ~ 0x027 | FAT Size 32 |
40 ~ 41 | 0x028 ~ 0x029 | Ext Flags |
42 ~ 43 | 0x02A ~ 0x02B | File System Version |
44 ~ 47 | 0x02C ~ 0x02F | Root DIrectory Cluster |
48 ~ 49 | 0x030 ~ 0x031 | File System Information |
50 ~ 51 | 0x032 ~ 0x033 | Backup Root Record |
52 ~ 53 | 0x034 ~ 0x03F | Reserved |
64 | 0x040 | Driver Number |
65 | 0x041 | Reserved1 |
66 | 0x042 | Boot Signature |
67 ~ 70 | 0x043 ~ 0x046 | Volume Serial Number |
71 ~ 81 | 0x047 ~ 0x051 | Volume Label |
82 ~ 89 | 0x052 ~ 0x059 | File System Type |
90 ~ 509 | 0x060 ~ 0x1FD | Boot Code and Error Message |
510 ~ 511 | 0x1FE ~ 0x1FF | Signature(0x55 AA) |
FSINFO (File System Information)
- 운영체제가 새로운 클러스터를 어디에 할당하는지 설명하는 구조체
범위 |
설명 |
|
Bytes | Hex | |
0 ~ 3 | 0x000 ~ 0x003 | Signature(0x41615252) |
4 ~ 483 | 0x004 ~ 0x1E3 | Not Used |
484 ~ 487 | 0x1E4 ~ 0x1E7 | Signature(0x61417272) |
488 ~ 491 | 0x1E8 ~ 0x1EB | Number of Free Clusters |
492 ~ 495 | 0x1EC ~ 0x1EF | Next Free Cluster |
496 ~ 509 | 0x1F0 ~ 0x1FD | Not Used |
510 ~ 511 | 0x1FE ~ 0x1FF | Signature(0x55 AA) |
Boot Strap
- 부트 섹터의 코드 영역이 부족할 경우 추가적으로 사용할 수 있는 영역
- 일반적으로 비어 있지만 FAT32에만 존재
'Digital Forensic > File System' 카테고리의 다른 글
NTFS 파일 시스템 - (2)MFT (0) | 2019.11.14 |
---|---|
NTFS 파일 시스템 - (1)VBR (0) | 2019.11.07 |
FAT 파일 시스템 - (3)데이터 영역 (0) | 2019.11.04 |
FAT 파일 시스템 - (2)FAT 영역 (0) | 2019.11.02 |
파일 시스템의 정의 및 유형 (0) | 2019.11.01 |