이번 글에서는 FAT 파일시스템에서 파일 생성, 삭제가 어떻게 이루어지는지에 대해서 이야기 할 것이다.

생성, 삭제 수행들은 여러 참조 모델들의 데이터를 이용하여 이루어 지는데 그 과정은 아래와 같다.

[파일생성 과정]
디렉토리(dir)는 생성되어 있으며 클러스터의 크기는 4096byte이고 파일 크기는 5000byte라고 가정한 과정이다.

1. 볼륨 섹터 0에서 부트 섹터를 참조하고, FAT 구조체와 데이터영역, 루트 디렉토리의 위치를 파악한다.

[그림 1 - 1번 과정]

2. 디렉토리를 찾기 위해 루트 디렉토리에서 각 디렉토리 엔트리를 해석하고, 찾을려고 하는 디렉토리의 이름과 디렉토리 속성을 이용하여 찾으려고 하는 디렉토리의 엔트리를 찾는다.

 [그림 2 - 2번 과정]

  * 참고 : 루트 디렉토리에는 "." 이 존재하지 않으나, 이미지에는 루트 디렉토리를 나타내기 위한 방편으로 추가하였다.

3. dir 시작 클러스터(10)의 내용을 읽고, 사용 가능한 디렉토리 엔트리를 찾아 파일명을 입력 한 후 할당 상태로 전환시킨다. 또 파일의 크기와 시간값도 입력한다. 그 후 파일 내용을 위한 클러스터를 할당 하기 위해 FAT 영역의 FAT 구조체를 이용한다. FAT 구조체에는 파일명, EOF, 다음 클러스터 주소 데이터, 타입 등이 포함된다. FAT 구조체로 클러스터를 할당 한 후 클러스터 10의 File.txt 디렉토리 엔트리에 시작 클러스터를 입력하고, 할당 된 클러스터에 파일 내용을 입력한다.

[그림 3 - 3번 과정]


4. 하지만 클러스터의 크기보다 파일의 크기가 더 커 또 하나의 클러스터를 할당 한다. 클러스터를 할당 하기 위해 FAT 영역의 FAT 구조체를 이용한다. 적당한 구조체를 통해 또 하나의 클러스터를 할당한다. 

[그림 4 - 4번 과정]

5. 시작 클러스터의 FAT 구조체에서 EOF 데이터를 지우고 다음 클러스터 주소를 입력한다. 그 후 나머지 파일 내용을 새롭게 할당 된 클러스터에 입력한다.

[그림 5 - 5번 과정]
 
 * 참고 : 위 이미지에는 나와있지 않지만, 클러스터 101의 FAT 구조체는 EOF 설정이 되어 있다.

 

이제 삭제 과정을 알아보자. 삭제 과정은 의외로 간단하다.

[파일삭제 과정]
파일 삭제 과정은 아래와 같다.

1. 파일 생성 과정 전체 과정처럼 파일의 클러스터 연결 확인까지 진행한다.

2. 클러스터 연결 확인을 수행했다면 해당 파일과 연관되어 할당되어 있는 클러스터의 FAT 구조체 엔트리 모두를 0으로 설정한다.

3. 그 후 디렉토리 엔트리의 첫 바이트를 "0xE5" 로 변경하여 해당 파일을 디렉토리 엔트리에서 할당 해제 시킨다.

위 과정을 거치면 아래와 같은 상태가 된다.

[그림 6 - 삭제 상태]

위 상태가 되면 커맨드 명령어나 탐색기로는 해당 파일에 접근이 불가능하다.



'[+] Forensic' 카테고리의 다른 글

File System - FAT (8)  (0) 2012.02.03
File System - FAT (7)  (0) 2012.02.02
File System - FAT (6)  (0) 2012.02.02
File System - FAT (5)  (0) 2012.02.02
File System - FAT (4)  (0) 2012.02.01

+ Recent posts