이번 글 부터는 FAT 파일시스템의 각 데이터 구조체들을 자세히 살펴 보도록 하겠다.
현재 글에서는 부트 섹터와 FAT 32 파일시스템에만 존재하는 FSINFO 구조체를 알아 볼 것이다.
일단 부트 섹터는 파일시스템 첫 섹터에 존재하며 FAT 파일시스템의 종류에 따라 조금씩 다르다.
하지만 첫 36byte는 동일하다. 일단 부트 섹터의 36byte부터 살펴보자.
위 이미지만 봐서는 정확히 설명이 안되는 부분이 있기 때문에 아래에 설명이 필요한 부분을 따로 설명 해 두었다.
- 부트 코드 점프 명령어 : 해당 부분은 부팅 파일시스템이 아니면 설정되지 않아도 되는 부분이다.
- 섹터당 바이트 수 : 이 부분은 주로 512, 1024, 2048, 4096 바이트로 할당되며, 이미지의 경우 512byte로 할당 된 것을 볼 수 있다.
- 클러스터 당 섹터 수 : 클러스터 당 섹터 수는 2제곱의 숫자만이 할당되는데 현재 이미지를 보면 1로 할당 되어 있어 정상적으로 할당 된 것을 알 수 있다.
- FAT 영역 개수 : 이 부분은 보통 2로 할당되지만 일부 작은 저장 장치에서는 1로 할당 되기도 한다.
- 루트 디렉토리 최대 파일 개수 : 이 부분은 FAT 파일시스템 종류마다 조금씩 차이가 있다.
1) FAT 12 : 224
2) FAT 16 : 512
3) FAT 32 : 0
- 파일시스템 섹터 수 : 이 부분은 2바이트로 표현된다. 2바이트로 표현되는 값보다 섹터 수가 많다면 0으로 설정된다.
- 미디어 유형 : 디스크 유형에 따라 다른 값이 할당 되는 부분으로, 고정식 디스크의 경우 "0xF8", 이동식 디스크의 경우 "0xF0" 이 할당 된다.
- FAT 영역의 섹터 수 : 이 부분은 FAT 12/16의 FAT 영역 섹터 수를 나타내는 부분으로 FAT 32의 경우는 0이 할당 된다.
- 파일시스템 섹터 수 : 위 2바이트로 표현되는 부분과 동일하나 차이점이 있다면 4바이트로 표현된다는 것이다. 2바이트로 표현이 안될 시 2바이트 부분은 0으로 설정되고 이 부분에 섹터 수가 설정 된다. 두 부분 중 한 부분은 무조건 0이 되어야 한다.
위에서 설명한 36byte 부분 다음부터는 FAT 12/16 과 FAT 32가 다르다. 하나의 이미지로는 설명 할 수 없어 설명은 표로 대신 한다.
* 참고 : FAT 32의 경우 버전번호 필드가 있는데 이 부분은 현재 한가지만 사용된다.
공통적으로 시그니처 값 전에 사용하지 않는 영역이 있는데 이 부분은 특별한 목적이 없기 때문에 사용되지 않는다고 표현 해 두었을 뿐, 일반적으로는 부트코드와 오류 메시지를 저장한다.
* 참고 : 볼륨 시리얼 번호는 Win 98에서만 날짜와 시간에 기반을 두어 계산을 했기 때문에 현재 98을 사용하는 시스템은 그렇게 많지 않으므로 계산방법은 생략하겠다.
부트 섹터 설명은 여기까지이다.
다음은 FSINFO 구조체에 대해서 알아 볼 것이다.
이 글 처음에서도 언급 했듯이 FSINFO 구조체는 FAT 32 파일시스템에만 존재하며 구조체의 역할은 운영체제가 새로운
클러스터를 어디에 할당하는지 설명하는 것이다.
각 오프셋 범위 별 설명은 아래 표로 대신하겠다.
현재 글에서는 부트 섹터와 FAT 32 파일시스템에만 존재하는 FSINFO 구조체를 알아 볼 것이다.
일단 부트 섹터는 파일시스템 첫 섹터에 존재하며 FAT 파일시스템의 종류에 따라 조금씩 다르다.
하지만 첫 36byte는 동일하다. 일단 부트 섹터의 36byte부터 살펴보자.
[그림 1 - 부트섹터 처음 36byte]
위 이미지만 봐서는 정확히 설명이 안되는 부분이 있기 때문에 아래에 설명이 필요한 부분을 따로 설명 해 두었다.
- 부트 코드 점프 명령어 : 해당 부분은 부팅 파일시스템이 아니면 설정되지 않아도 되는 부분이다.
- 섹터당 바이트 수 : 이 부분은 주로 512, 1024, 2048, 4096 바이트로 할당되며, 이미지의 경우 512byte로 할당 된 것을 볼 수 있다.
- 클러스터 당 섹터 수 : 클러스터 당 섹터 수는 2제곱의 숫자만이 할당되는데 현재 이미지를 보면 1로 할당 되어 있어 정상적으로 할당 된 것을 알 수 있다.
- FAT 영역 개수 : 이 부분은 보통 2로 할당되지만 일부 작은 저장 장치에서는 1로 할당 되기도 한다.
- 루트 디렉토리 최대 파일 개수 : 이 부분은 FAT 파일시스템 종류마다 조금씩 차이가 있다.
1) FAT 12 : 224
2) FAT 16 : 512
3) FAT 32 : 0
- 파일시스템 섹터 수 : 이 부분은 2바이트로 표현된다. 2바이트로 표현되는 값보다 섹터 수가 많다면 0으로 설정된다.
- 미디어 유형 : 디스크 유형에 따라 다른 값이 할당 되는 부분으로, 고정식 디스크의 경우 "0xF8", 이동식 디스크의 경우 "0xF0" 이 할당 된다.
- FAT 영역의 섹터 수 : 이 부분은 FAT 12/16의 FAT 영역 섹터 수를 나타내는 부분으로 FAT 32의 경우는 0이 할당 된다.
- 파일시스템 섹터 수 : 위 2바이트로 표현되는 부분과 동일하나 차이점이 있다면 4바이트로 표현된다는 것이다. 2바이트로 표현이 안될 시 2바이트 부분은 0으로 설정되고 이 부분에 섹터 수가 설정 된다. 두 부분 중 한 부분은 무조건 0이 되어야 한다.
위에서 설명한 36byte 부분 다음부터는 FAT 12/16 과 FAT 32가 다르다. 하나의 이미지로는 설명 할 수 없어 설명은 표로 대신 한다.
[그림 2 - FAT 12/16의 부트 섹터 나머지 부분]
[그림 3 - FAT 32의 부트 섹터 나머지 부분]
* 참고 : FAT 32의 경우 버전번호 필드가 있는데 이 부분은 현재 한가지만 사용된다.
공통적으로 시그니처 값 전에 사용하지 않는 영역이 있는데 이 부분은 특별한 목적이 없기 때문에 사용되지 않는다고 표현 해 두었을 뿐, 일반적으로는 부트코드와 오류 메시지를 저장한다.
* 참고 : 볼륨 시리얼 번호는 Win 98에서만 날짜와 시간에 기반을 두어 계산을 했기 때문에 현재 98을 사용하는 시스템은 그렇게 많지 않으므로 계산방법은 생략하겠다.
부트 섹터 설명은 여기까지이다.
다음은 FSINFO 구조체에 대해서 알아 볼 것이다.
이 글 처음에서도 언급 했듯이 FSINFO 구조체는 FAT 32 파일시스템에만 존재하며 구조체의 역할은 운영체제가 새로운
클러스터를 어디에 할당하는지 설명하는 것이다.
각 오프셋 범위 별 설명은 아래 표로 대신하겠다.
[그림 4 - FSINFO 구조체 오프셋]
'[+] Forensic' 카테고리의 다른 글
File System - FAT (10) (0) | 2012.02.05 |
---|---|
File System - FAT (9) (0) | 2012.02.04 |
File System - FAT (7) (0) | 2012.02.02 |
File System - FAT (6) (0) | 2012.02.02 |