둘둘리둘둘리둘둘리둘둘리둘둘리둘

FAT32의 저장방식 본문

Windows

FAT32의 저장방식

dool2ly 2014. 6. 25. 17:16

FAT의 저장방식

파일 내용 리스트는 File Entry (FAT#1)에 있고 파일 이름과 내용의 위치,MAC등은 Root directory에 있다. 

Root directory를 현재의 '새볼륨 (E :)'이라고 생각하면 이해가 쉬울것 같다.

Root directory는 Root directory의 내용만 포함하고있고, 그 하위폴더는 하위폴더의 파일 내용을 저장하는 내용을 가진다.




실습환경: XP, FAT32 1GB 파티션

Windows7이나 XP나 FAT의 저장방식은 동일하고, Reserved area의 크기만 다르다

HDD의 내용을 쉽게 변경 할 수 없는 Windows7대신 XP를 이용하여 실습함...


1. FAT#1(Directory entry)

Reversed Area의 크기를 확인 하여 PBR에서 그만큼 떨어진 곳에있는 FAT영역을 확인해보자

(관련링크 : FAT32구조, Partition table entry)


95번 섹터에 위치한 File entry


95섹터 = 현재 PBR의 섹터번호(63)에서 0x0020섹터 떨어진 위치, 아래는 File entry 구조

4Byte당 한클러스터를 나타냄(FAT12/16에선 2Byte)

0x00000000: Available

0x?FFFFFFF: End of marker

다른 값이 들어있다면 파일의 내용이 들어있는 다음 클러스터 번호를 의미


File entry를 보면 #0~#14까지 사용중인 클러스터임을 알 수 있다.

Cluster #0은 Media type, #1은 파티션의 정보들이 있고, 

Root directory는 PBR의 18. Root directory cluster항목에 지정되어 있는 Cluster #2에 있다.


2. Root directory


PBR의 Root directory cluster에 지정된 Cluster#2

이곳이 Data area의 시작인데, 이곳의 위치는 Reserved sector count + (FAT Size32*2)번째 섹터인 4199 섹터이다. (Data area앞에 Reserved area,FAT area가 있기때문)


Root directory를 살펴보자

오른쪽에 ASCII코드로 표로 표현한곳을 보면 TEST_F~1, LENTES~1TXT, TEST    TXT등 위에서 만든 파일,폴더 이름과 유사한 값들이 보이는데

Directory structure를 보면

앞의 8Byte는 이름,0x08~0x0A는 확장자라는 것을 알 수 있다.

그런데, 앞서 생성했던 파일,폴더중 test_folder,LFN test dool2ly.txt처럼 8Byte가 넘어가는 파일들은 바로 윗쪽에 LFN(Long File Name) 구조체를 생성하여 이름을 나타낸다.

TEST_F~1,LENTES~1TXT로 표기된 이유는 DOS시절의 파일 표기법인 8.3방식때문


LFN structure

Attribute,Type,Check sum,First cluster low는 사용하지 않고 Order는 순서를 나타낸다.

Name영역이 총 26Byte로 LFN 하나당 Unicode 13글자를 나타낼 수 있다.

현제 점(.)과 확장자,공백까지 이름취급하며 windows가 제일 마지막 점 뒤부터 확장자로 인식한다.

order는 LFN이 2개 이상 이라면 01,02,03...식으로 늘어나며 순서를 표시하는데 마지막 LFN은 '4?'로 마지막임을 알린다. (예: LFN이 3개라면 01,02,43이고 하나면 41)


파일의 내용은 Directory structure의 First cluster low를 보면 알 수 있는데 예로 test.txt의 First cluster low value는 03으로 3번 cluster에 파일 내용이 있다는 의미다.


현재 위치가 Root directory(Cluster#2, 4199 sector)니까 Cluster#3로 가려면 4199+8번째 섹터


폴더는


















'Windows' 카테고리의 다른 글

PE header관련 구조체  (0) 2015.10.17
PE 파일 구조 - 2  (0) 2015.10.13
PE 파일 구조 - 1  (0) 2015.10.13
FAT32 구조  (0) 2014.06.24
Partition Table Entry와 FAT16 BR구조  (0) 2014.06.22
Comments