Search

FAT

대분류
보안
소분류
디지털 포렌식
유형
파일 시스템
FAT
최종 편집 일시
2024/10/30 15:58
생성 일시
2024/10/30 15:51
15 more properties

FAT12

5.25인치 플로피디스크에 파일을 저장하기 위해 개발
1983년 MS-DOS 2.0이 출시될 때 FAT12에 계층형 디렉터리가 지원됨
12비트를 사용하여 클러스터 위치를 표현, 212 최대 4,096개의 클러스터표현 가능, 이중에 12개는 예약 영역으로 실제 4,084개의 클러스터를 표현

FAT16

HDD 기술의 발달로 개인용 컴퓨터에서 사용할 파일시스템의 필요성 증 가
1988년 MS-DOS 4.0에서 FAT16 발표
2^16 최대 65,524개의 클러스터표현(예약 영역 12개 제외)

VFAT or Fast FAT

1995년 MS는 Windows 95에서 FAT 파일시스템의 성능과 기능을 향상 시킴
LFNs (Long File Names) 지원
이전의 FAT 파일시스템은 8.3 File naming, 대문자만 가능
최대 255 문자까지 파일명으로 적용 가능
이전 버전의 DOS와 호환성 유지
볼륨의 최대 용량은 2GB로 파일 시스템의 용량 표현 문제가 여전히 존재

FAT32

1996년 MS는 Windows 95 OSR2에서 FAT32 사용
클러스터 표현 비트 수 28 bits (4 bits 예약 영역)
볼륨의 최대 용량은 32GB로 제한

FAT 파일 시스템의 호환성

1996년 MS는 Windows 95 OSR2에서 FAT32 사용
클러스터 표현 비트 수 28 bits (4 bits 예약 영역)
볼륨의 최대 용량은 32GB 제한

구조

File Allocation Table

Structure - Reserved Area

FAT32
0, 6 : Volume Boot Sector, 부트 섹터 오프셋 50-51 항목을 사용해 백업 섹터 조정 가능
1, 7 : File System Information(FSINFO) Structure, 부트섹터 오프셋 48-49 항목을 사용해 임의로 지정 가능
FSINFO 구조체는 비할당 클러스터의 첫 위치와 전체 비할당 클러스터 의 수를 알려줌으로써 저장할 데이터를 빠르게 할당할 수 있도록 도와줌
2, 8 : Additional bootstrap code

Structure - Volume Boot Sector Format of FAT 12/16/32

Reserved Sector Count : 설정 된 개수를 지나면 FAT#1가 나타남
Root director entry count : 루트 디렉토리에 몇 개의 엔트리를 수용할 것인지를 나타냄,
FAT16의 경우 루트 디렉토리 영역이 따로 분리되어 있기 때문임
Media Type
0xF0, 0xF9, 0xFD, 0xFF, 0xFC, 0xFe : 3.5 혹은 5.25인치 플로피디스크
0xF8 : 고정식 디스크(플로피 디스크를 제외한 모든 장치)
Total Sector 32 : FAT32는 Total Sector 16 대신 이 영역에 4바이트로 섹 터 수를 표시함
Root directory cluster offset : FAT16과는 다르게 루트 디렉토리가 고정되 어 있지 않기 때문, 루트 디렉토리 시작 위치가 지정
Backup boot sector offset : 보통 6번 섹터를 이용
Address range
size
Field Name
Description
0x0003 – 0x000A
8 byte
OEM ID
OEM(Original Equipment Manufacturer) 식별자. 이 영역을 참조하는 작업은 없음, 단지 OEM을 나타내는 부분
0x000B – 0x000C
2 byte
Bytes per sector
한 섹터 당 할당되는 byte 크기
0x000D – 0x000D
1 byte
Sectors per cluster
한 클러스터 당 할당되는 섹터 수
0x000E – 0x000F
2 byte
Reserved sector count
FAT Area가 나오기 전에 예약된 영역의 섹터 수
0x0010 – 0x0010
1 byte
Number of FAT
FAT Area의 개수, 통상 #1, #2로 두개 있음
0x0011 – 0x0012
2 byte
Root directory entry count
FAT12 / FAT16의 할당된 루트 디렉토리 엔트리 개수 (FAT32는 0으로 세팅)
0x0013 – 0x0014
2 byte
Total sector 16
볼륨 상에 있는 총 섹터수
0x0015 – 0x0015
1 byte
Media Type
볼륨에 어떤 미디어가 저장되어 있는지 나타냄. (플로피디스크를 제외하고 모두 0xF8)
0x0016 – 0x0017
2 byte
FAT size 16
FAT Area의 섹터 수를 나타냄.(FAT32에는 쓰이지 않음)
0x0018 – 0x0019
2 byte
Sector per track
트랙 당 섹터 수
0x001A – 0x001B
2 byte
Number of heads
헤더 수
0x001C – 0x001F
4 byte
Hidden sectors
볼륨 앞에 숨겨진 섹터 수
0x0020 – 0x0023
4 byte
Total sector32
볼륨 상에 있는 총 섹터수 (Total sector 16에서 표현이 불가능하면 이 필드를 쓰는듯..)
0x0024 – 0x0024
1 byte
INT 0x13 drive number
x86 계열에서 사용하는 INT 0x13 사용시 필요한 필드 (Floppy=0x00, Hard Drvie=0x80)
0x0025 – 0x0025
1 byte
Reserved
사용하지 않는 예약 영역
0x0026 – 0x0026
1 byte
Boot signature
확장 부트 서명
0x0027 – 0x002A
4 byte
Volume serial number
해당 볼륨의 고유 시리얼 번호가 기록됨
0x002B – 0x0035
11 byte
Volume label
윈도우에서의 해당 볼륨 레이블
0x0036 – 0x003D
8 byte
File system type
파일시스템 형식
Total 0x0003 - 0x003D
59 byte
BIOS Parameter Block
총 크기

Volume Boto Sector

FAT 구조

FAT (File Allocation Table) Area - #1 FAT, #2 FAT(Backup)
저장된 파일의 클러스터 할당 관계를 표현 - FAT 12/16 (2 bytes), FAT 32 (4 bytes)
FAT Entry 0 - Media Type
FAT Entry 1 - Volume Status

Root Directory

FAT영역 바로 뒤, 데이터 영역의 제일 앞부분
FAT12/16
32개 섹터인 16,384Byte를 Root Directory로 사용
Directory Entry가 32Byte이므로 512개의 Entry를 나타낼 수 있음
FAT 32
어느 곳에서 Root Directory가 올 수 있으나 주로 FAT Entry 2번 (cluster 2번)에 위치함
개수의 제한이 없음
디렉터리는 디렉터리 내부에 포함되는 하위 디렉터리 및 파일의 이름, 확장자, 시간 정보, 크기 등을 표현하기 위해 Directory Entry라는 구조를 사용

Structure FAT Data Area

모든 파일과 디렉터리는 Directory Entry로 표현됨
파일 이름 또는 디렉토리 이름의 문자 제한
영어 대문자 : A ~ Z (소문자는 대문자로 변환)
숫자 : 0 ~ 9
특수 문자 : $ % ` - _ @ ~ ! ( ) { } ^ # &
0xE5로 첫 번째 바이트가 시작되면 해당 Entry는 삭제되었음을 의미(복 구 가능 이유임)
파일이 삭제되면 이외에도 FAT Entry도 0x00 으로 초기화 됨
첫 번째 바이트가 0x00이면 아직 사용되지 않은 Entry를 의미