대학생들을 위한 IT

FAT 32 :: 이커시 본문

FORENSIC/윈도우 파일구조

FAT 32 :: 이커시

phantomik 2019. 1. 24. 14:49
FAT 32

[File Allocation Table]의 약자, [파일 할당 테이블]이다.

현재 메모리 카드플래시 메모리 같은 많은 장치에서 사용하며, 그런 메모리를 사용하는 많은 이동식 장비들도 FAT를 지원한다.

간단한 디자인이 이동성 측면에서는 장점이지만, 안정성 면에서는 단점으로 작용한다. 디스크 오류에 대비한 저널링과 같은 각종 현대적 안전 장치들이 FAT에는 미미하기 때문이다.

FAT라는 이름은 디스크를 포맷할 때 일괄적으로 색인표를 만들어 두는 데에서 기인한다. 간단하게 말해 [클러스터를 제어]하는 것

cf. 클러스터

컴퓨터 하드디스크에서 사용하는 논리적 단위.

하드디스크 드라이브에서 파일을 저장하는 단위로 1개 또는 복수의 섹터로 이루어진다. 작은 파일은 1개, 용량이 큰 파일은 여러 개의 클러스터를 사용하여 저장한다. 여러 개의 클러스터를 사용할 때 반드시 연결되어 있지는 않다. 여기저기 흩어져 있어도 그 위치와 순서를 기록한 FAT에 의하여 관리되므로, 한 번에 파일의 전체 내용을 읽을 수 있다.

FAT엔트리의 크기에 따라 최대 클러스터 수가 정해진다.

클러스터의 크기는 512Byte부터 1KByte, 2KB, 4KB 등으로 다양하게 설정할 수 있으나,

너무 크면 작은 파일을 저장할 때 효율이 떨어진다.


## FAT32 부트 레코드

FAT32 부트 레코드

  • Jump Boot Code
    • FAT 12/16 : EB 3C 90
    • FAT 32      : EB 58 90
    • NTFS        : EB 52 90
  • OEM Name
    • 파일 시스템을 생성한 프로그램이 기록
  • Bytes Per Sector
    • 섹터 크기 : 보통 512 Bytes
  • Sector Per Cluster (SP개수)
    • 클러스터를 구성하는 섹터의 수
    • 보통 클러스터 크기 : 4KB (4096 Bytes, 섹터 8개)
  • Reserved Sector Count (RS개수)
    • 예약된 섹터의 개수
    • BR도 예약공간에 포함 BR은 예약공간의 첫 번째 섹터
    • FAT16은 1, FAT32는 32
  • FAT count
    • FAT의 개수 일반적으로 2
  • Root Directory Entry Count (RDE 개수)
    • FAT 16에만 해당
    • 루트 디렉터리에 엔트리 항목을 몇 개로 할 지
  • Media Type
    • 플로피 디스크를 제외한 모든 저장장치는 0xF8 값을 가짐
    • --> 플로피 디스크 ㅋㅋㅋㅋ
  • FAT Size 16
    • FAT 영역 섹터 개수 // FAT 32 경우 0
  • Hidden Sector
    • 볼륨 앞에 숨겨진 섹터 // 실제로 숨겨져 있는 뜻이 아닌 MBR을 비롯한 볼륨으로 사용되지 않는 섹터 수
  • Total Sector 32
    • 파티션(볼륨)의 총 섹터 개수
    • 2^32 = 2TB
  • Root Directory Cluster
    • 루트 디렉터리가 들어 있는 클러스터 번호 일반적으로 2
    • 루트 디렉터리가 들어가 있는 2 (3번째 자리)가 실질적 첫 번째 클러스터
  • File System Information
    • 0x0001
  • BR Backup Sector
    • BR이 백업된 섹터 번호 보통 6 (0x0006)
    • PBR이 기준 (PBR을 0 가정)
  • Signature
    • BR의 끝
    • 0xAA55 --> 55 AA

## FAT Entry
  • 클러스터의 사용 유무 정보 저장
  • FAT32에서는 FAT Entry는 4 Byte로 구성
  • 클러스터 번호라고 말하기도 함


  • 설명

     0x?0000000

     사용 가능 클러스터

     0x?0000001

     예약된 클러스터

     0x?0000002 ~ 0x?FFFFFEF

     사용 중인 클러스터 //  FAT ENTRY에 저장된 값은 자신의 다음 클러스터 번호 저장

     0x?FFFFFFF0 ~ 0x?FFFFFF6

     예약된 클러스터

     0x?FFFFFF7

     불량 클러스터

     0x?FFFFFF8 ~ 0x?FFFFFFF

     End of Cluster


## Directory Entry

파일이나 디렉토리의 이름과 종류, 파일 내용이 들어 있는 클러스터의 첫 번째 주소를 가지고 있다.
디렉토리 엔트리의 개수는 특별한 제한은 없으나 FAT16의 Root Directory인 경우에만 제한
(Root Directory Entry Count 항목에 기록)

출처: https://gedor.tistory.com/9 [gedor]
FAT32에서는 FAT Entry는 4 Byte로 구성

출처: https://gedor.tistory.com/9 [gedor]
FAT 영역에서 클러스터의 사용 유무 정보 저장T32에서는 FAT Entry는 4 Byte로 구성

출처: https://gedor.tis

Directory Entry

  • 32 byte

  • Name (8byte)
    • 0xE5 : 삭제된 파일/디렉터리 // 파일이나 디렉터리가 삭제해도 데이터나 엔트리가 삭제되지 않고 첫 바이트 0xE5로 변경
    • 0x00 : 엔트리가 사용되지 않음
    • 0x05 : 일본어로 파일이름을 사용하는 경우
  • Extender
    • 빈칸 0x20
  • Attribute
    • 0x01 : Read Only
    • 0x02 : Hidden
    • 0x04 : System
    • 0x08 : Volume Label
    • 0x10 : Directory
    • 0x20 : Archive
    • 0x0F : Long File Name Entry
  • First Cluster High : 파일 내용이 들어 있는 클러스터의 시작번호의 상위 2Byte (FAT 16에서는 사용 X)
  • First Cluster Low : 파일 내용이 들어 있는 클러스터의 시작번호의 하위 2Byte (FAT 16에서는 이것만 사용)
  • File Size
    • 파일 사이즈, 디렉터리 경우 0
## LFN (Long File Name) = 이름이 긴 경우

LFN용 디렉터리 엔트리 구조

  • Order

    • 파일 이름이 길어지면 LFN 엔트리를 여러개 사용, 하나의 파일 이름에 대한 엔트리 번호를 나타냄
    • 0x4? : LFN 엔트리 끝을 알림
  • Name 1
    • 파일 이름의 1~5번째 글자 기재
  • Attribute
    • 하위 호환성 위해 존재 / 언제나 0x0F
  • Type
    • 엔트리 종류
    • 0 : LFN Type
  • Checksum
    • Short Directory Entry에 기록된 8.3 파일 이르멩 대한 체크 섬 (이름(8, [.] 포함) + 확장자(3))
  • Name 2
    • 파일 이름의 6 ~ 11번째 글자 기재
  • Name 3
    • 파일 이름의 12 ~ 13번째 글자 기재


'FORENSIC > 윈도우 파일구조' 카테고리의 다른 글

FAT 32 (2) :: 이커시  (0) 2019.01.24
Comments