exfat (Extended FAT) File System Twitter : @pr0neer Blog : f Email : proneer@gmail.com Kim Jinkook
Outline 1. exfat File System Introduction Internals Directory Structure Example
exfat Introduction Security is a people problem
exfat Introduction Introduction exfat (Extended FAT) : 확장파일할당테이블 마이크로소프트에서새롭게발표한파일시스템 (FAT64 라고도불림 ) 등장배경 외장형장치 대용량멀티미디어파일 오버헤드의최소화 TFAT (Transactional FAT) 과의호환성
exfat Introduction Timeline (Key Dates) 2006 년 11 월 : 윈도우 CE 6.0 에서소개 2008 년 03 월 : exfat 호환성을가진비스타서비스팩 1 출시 2009 년 01 월 : SDXC (Secure Digital extended Capacity) 메모리카드명세발표, 파일시스템으로 exfat 채택 2009 년 01 월 : exfat 을지원하는윈도우 XP 드라이버발표 2009 년 03 월 : Pretec 에서최초로 SDXC 카드출시 2009 년 12 월 : exfat 라이선스프로그램발표 2009 년 12 월 : Diskinternals 에서 exfat 복구프로그램발표
exfat Introduction SDXC? 다양한플래시메모리카드모델 (SD vs. CF) SD 와 SDHC 카드의후속모델 크기는기존제품과동일하지만용량 ( 최대 2 TB) 과성능면에서강점
exfat Introduction Supported Operating Systems Windows Vista SP1 Windows XP SP 2 (with updates) Windows XP SP 3 (with updates) Windows Server 2003 Windows Server 2008 Windows 7 Windows CE 6.0
exfat Introduction Getting the drives put onto Windows XP KB955704 업데이트패치를통해가능 http://www.microsoft.com/downloads/en/details.aspx?familyid=1cbe3906 ddd1 4ca2 b727 c2dff5e30f61&displaylang=en
exfat Introduction Summary of exfat Features 가변형섹터크기 (512 ~ 4096 바이트 ) 최대클러스터크기 (32 MB) 하위디렉터리 (256 MB) NTFS 의특징을가지지만 NTFS 보다낮은오버헤드 TexFAT (Transactional exfat) 호환 ACL (Access Control List), UTC (Universal Time, Coordinated) Timestamp 지원 OEM 파라미터섹터 9 섹터크기의 VBR (Volume Boot Record) 영역 ( 대용량부트프로그램가능 ) 하위디렉터리파일개수증가 ( 최대 2,796,202 개 )
exfat Introduction Scalability and Limitations 파일크기 : 128 PB ( 이론적으로 64 ZB, 마이크로소프트는 512 TB 권장 ) 디렉터리당최대파일개수 : 2,796,202 파일이름최대길이 : 255 문자 볼륨크기 : 16 EB ( 이론적으로는 64 ZB, 마이크로소프트는 512 TB 권장 ) 단위 바이트 KB Kilobyte 2 10 1024 MB Megabyte 2 20 1024 KB GB Gigabyte 2 30 1024 MB TB Terabyte 2 40 1024 GB PB Petabyte 2 50 1024 TB EB Exabyte 2 60 1024 PB ZB Zetabyte 2 70 1024 EB
exfat Introduction Maximum Volume and File Limitations FAT 12 FAT 16 FAT 32 NTFS UDF exfat 최대볼륨크기 32 MB 2 GB 2 TB 16 TB 2 TB 128 PB 최대파일크기 4GB 4GB 4GB 16 EB 16 EB 16 EB 복잡성 / 성능 Low Low Low High Low Low 고장저항력 (Fault Tolerance) 객체권한 (Object Permissions) No No No Yes No Yes No No No Yes No Yes 파일이름최대길이 255 255 256 256 127 Unicode 254 ASCII 255 Unicode
exfat Introduction How to Identify exfat Capability 시스템파일 exfat.sys %SystemRoot%\System32\Drivers\ format.com exfat 옵션포함여부 uexfat.dll %SystemRoot%\System32\ 수정된파일 fmifs.dll fs_rec.sys ifutil.dll Shell32.dll ulib.dll xpsp3res.dll
exfat Introduction How to Identify exfat Capability XP 레지스트리키 SOFTWARE\Microsoft\Updates\Windows XP\SP4\KB955704 SYSTEM\%Current Control Set%\Enum\Root\LEGACY_EXFAT SYSTEM\%Current Control Set%\Services\exFAT 그밖에 exfat 을가지는키 Vista 레지스트리키 SYSTEM\%Current Control Set%\Enum\Root\LEGACY_EXFAT SYSTEM\%Current Control Set%\Services\Eventlog\System\exFat SYSTEM\%Current Control Set%\Services\exFAT 그밖에 exfat 을가지는키
exfat Internals Security is a people problem
exfat Internals Volume Structure Main Boot Region Backup Boot Region FAT Region Data Region
exfat Internals Volume Structure Volume Boot Record Backup Volume Boot Record FAT Cluster Heap Sector 0 Sector 1 Sector 2 Sector 3 Sector 4 Sector 5 Sector 6 Sector 7 Sector 8 Sector 9 Sector 10 Sector 11 Boot Sector Extended Boot Sectors OEM Reserved Checksum Parameter Sector Sector Record Boot Sector : BIOS Parameter Block (BPB), 부트코드, 시그니처 Extended Boot Sectors : 추가적인부트코드 대용량부트프로그램 OEM Parameter Record : 공장에서매체제조사에의해기록된내용 Reserved Sector : 현재정의되어있지않음 Checksum Sector : 이전 11 섹터에대한체크섬값 VBR 의마지막 3 섹터는부트시그니처 (0x55AA) 가존재하지않음
exfat Internals VBR Boot Sector Volume Boot Record Backup Volume Boot Record FAT Cluster Heap Sector 0 Sector 1 Sector 2 Sector 3 Sector 4 Sector 5 Sector 6 Sector 7 Sector 8 Sector 9 Sector 10 Sector 11 Boot Sector Extended Boot Sectors OEM Reserved Checksum Parameter Sector Sector Record 범위 설명 0 2 Jump Command to boot code 3 10 File System Name 11 63 Previously FAT Compatible 64 119 BIOS Parameter Block 120 509 Boot Program 510 511 Signature (0xAA55)
exfat Internals VBR Boot Sector 필드명위치 ( 바이트 ) 크기 ( 바이트 ) 설명 / 값 Jump Boot 0 3 0xEB7690 File System Name 3 8 EXFAT Must Be Zero 11 53 반드시 0x00 ( 기존 FAT 간의오류를막기위해존재 ) Partition Offset 64 8 파티션위치섹터주소 Volume Length 72 8 볼륨에할당된총섹터수 FAT Offset 80 4 1 st FAT 의섹터주소 FAT Length 84 4 FAT 에할당된총섹터수 Cluster Heap offset 88 4 데이터영역의섹터주소 Cluster Count 92 4 데이터영역의총클러스터수 Root Directory First Cluster 96 4 루트디렉터리의클러스터주소 Volume Serial Number 100 4 볼륨시리얼번호 File System Revision 104 2 파일시스템변경사항 Volume Flags 106 2 볼륨플래그 Bytes Per Sector 108 1 섹터당바이트수 Sectors Per Cluster 109 1 클러스터당섹터수 Number of FATs 110 1 FAT 개수 Drive Select 111 1 INT 13h 사용을위해존재 Percent In Use 112 1 데이터영역의사용량 Reserved 113 7 Boot Code 120 390 부트프로그램 Boot Signature 510 2 0xAA55
exfat Internals VBR Boot Sector Jump Command File System Name Previously FAT BPB Region BIOS Parameter Block (BPB) Boot Code Region Signature
exfat Internals VBR Extended Boot Sector Volume Boot Record Backup Volume Boot Record FAT Cluster Heap Sector 0 Sector 1 Sector 2 Sector 3 Sector 4 Sector 5 Sector 6 Sector 7 Sector 8 Sector 9 Sector 10 Sector 11 Boot Sector Extended Boot Sectors OEM Reserved Checksum Parameter Sector Sector Record Extended Boot Sectors : 추가적인부트코드 대용량부트프로그램 별도의부트코드가기록되지않을경우 0x00 으로채워짐 시그니처는 0xAA55
exfat Internals VBR Extended Boot Sector Volume Boot Record Backup Volume Boot Record FAT Cluster Heap Sector 0 Sector 1 Sector 2 Sector 3 Sector 4 Sector 5 Sector 6 Sector 7 Sector 8 Sector 9 Sector 10 Sector 11 Boot Sector Extended Boot Sectors OEM Reserved Checksum Parameter Sector Sector Record OEM Parameter Record : 공장에서매체제조사에의해기록된내용 HDD 에서는현재사용되고있지는않음 포맷시지워지지않음 ( 완전삭제는예외 ) Parameter Field 48 바이트의 10 개필드 16 바이트 GUID + 32 바이트파라미터
exfat Internals VBR Extended Boot Sector Volume Boot Record Backup Volume Boot Record FAT Cluster Heap Sector 0 Sector 1 Sector 2 Sector 3 Sector 4 Sector 5 Sector 6 Sector 7 Sector 8 Sector 9 Sector 10 Sector 11 Boot Sector Extended Boot Sectors OEM Reserved Checksum Parameter Sector Sector Record Checksum Sector : 이전 11 섹터에대한체크섬값 0x68086CCB 4 바이트체크섬값반복
exfat Internals File Allocation Table (FAT) Volume Boot Record Backup Volume Boot Record FAT Cluster Heap Volume Boot Record Backup Volume Boot Record FAT #1 FAT #2 Cluster Heap FAT #2 : TexFAT 에서만지원 버전 1.0 에서는 Transactional exfat (TexFAT) 미지원 FAT #2 는 FAT #1 과항상다음에존재하며동일한크기 FAT12/16/32 에서 FAT 의역할은클러스터체인과할당상태 exfat 에서는할당상태역할은제외 비트맵을통해관리 I/O 성능향상 연속적인클러스터할당일경우 FAT 사용 X, 비연속적일경우에클러스터체인으로만활용
exfat Internals File Allocation Table (FAT) Volume Boot Record Backup Volume Boot Record FAT Cluster Heap Volume Boot Record Backup Volume Boot Record FAT #1 FAT #2 Cluster Heap 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x0000 Media Type Status Byte Cluster 2 Cluster 3 0x0010 Cluster 4 Cluster 5 Cluster 6 Cluster 7 Media Type 플로피미지원 0x0020 Cluster 8 Cluster 9 Cluster 10 Cluster 11 항상 0xFFFFFFF8 0x0030 Cluster 12 Cluster 13 Cluster 14 Cluster 15 Status Byte 0x0040 Cluster 16 Cluster 17 Cluster 18 Cluster 19 사용하지않음 0x0050 Cluster 20 Cluster 21 Cluster 22 Cluster 23 항상 0xFFFFFFFF
exfat Internals File Allocation Table (FAT) As soon as media is formatted 0x00000000 : No significant meaning 0x00000001 : Not a valid cell value 0xFFFFFFF6 : Largest Value 0xFFFFFFF7 : Bad Block 0xFFFFFFF8 : Media Descriptor 0xFFFFFFF9 ~ E :NotDefined 0xFFFFFFFF : End of File (EOF) Cluster 2 : Allocation Bitmap Cluster 3 : UP-Case Table Cluster 4 : Root Directory
exfat Internals File Allocation Table (FAT) FAT Example FAT Offset Boot Sector in VBR FATLinked List Array 0xFFFFFFF8 0xFFFFFFFF +0 +4 2 +8 First Cluster 40 Directory Record 40 41 42 43 41 80 +160 +164 +168 +172 80 81 82 101 +320 +324 +328 100 101 102 0xFFFFFFFF (EOF) +400 +404 +408 103 +412
exfat Internals Allocation Bitmap Table Root Directory First Cluster Boot Sector in VBR Volume Label Directory Record Root Directory UP Case Table Directory Record First Cluster Allocation Bitmap Directory Entry First Cluster Cluster 2 9 Cluster 10 17 Cluster 18 25 Cluster 16 33 Cluster 34 41 Cluster 42 4949 Cluster 74 81 Cluster 82 89 Cluster 90 97 Cluster 98 105 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 +0 +1 +2 +4 +8 +4 +8 +0 +4
exfat Internals Cluster Heap Volume Boot Record Backup Volume Boot Record FAT Cluster Heap Cluster Heap exfat 파일시스템의데이터영역 루트디렉터리 하위디렉터리 UP-Case 테이블 Allocation Bitmap 파일
exfat Directory Structure Security is a people problem
exfat Directory Structure Root Directory 하위디렉터리, 파일, 볼륨레이블, UP Case 테이블위치, 할당비트맵 (Allocation Bitmap) 위치등으로사용 TexFAT (Transactional FAT), ACL (Access Control List) 은현재윈도우 CE 버전에서만지원 각파일및디렉터리는 3 ~ 19 개의엔트리사용 디렉터리엔트리 32 바이트크기 첫바이트형식코드 (Type Code) 를통해해당엔트리의상태및목적을나타냄
exfat Directory Structure Root Directory Type Code 형식코드 위치 크기 In Use 7 1 Category 6 1 Importance 5 1 Code 0 5 In Use 0 : Not In Use 1 : In Use Category 0 : Primary Entry 1 : Secondary Entry Importance 0 : Critical Entry 1 : Benign Entry Code Identifiers the entry
exfat Directory Structure Root Directory 총 10 개의디렉터리엔트리사용 볼륨레이블디렉터리엔트리 (Volume Label Directory Entry) 할당비트맵디렉터리엔트리 (Allocation Bitmap Directory Entry) 대문자테이블디렉터리엔트리 (UP Case Directory Entry) 볼륨 GUID 디렉터리엔트리 (Volume GUID Directory Entry) TexFAT 패딩디렉터리엔트리 (TexFAT Padding Directory Entry) 윈도우 CE 접근제어테이블디렉터리엔트리 (Windows CE Access Control Table Directory Entry) 파일디렉터리엔트리 (File Directory Entry) 스트림확장디렉터리엔트리 (Stream Extension Directory Entry) 각파일및디렉터리당 3 개의엔트리구성 파일이름확장디렉터리엔트리 (File Name Extension Directory Entry)
exfat Directory Structure Volume Label Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type Char Cnt Volume Label 0x10 Volume Label Reserved 데이터구조 필드명 위치 크기 설명 / 값 Entry Type 0 1 083 0x83 Character Count 1 1 레이블문자열길이 Volume Label 2 22 볼륨레이블 ( 유니코드 ) Reserved 24 8 형식코드표현 형식코드 위치 크기 값 In Use 7 1 1 Category 6 1 0 Importance 5 1 0 Code 0 5 00001 볼륨레이블최대길이 : 11 글자 볼륨레이블을할당하지않을경우 ( 포맷시 ), 형식코드값은 0x03 In Use 비트가 0 이되지만, 삭제된것이아니라단지사용하지않음을의미
exfat Directory Structure Volume Label Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type Char Cnt Volume Label 0x10 Volume Label Reserved 볼륨레이블을지정안한경우 볼륨레이블을지정한경우
exfat Directory Structure Allocation Bitmap Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type BitM Flags Reserved 0x10 Reserved First Cluster Data Length 데이터구조 필드명 위치 크기 설명 / 값 Entry Tpe Type 0 1 081 0x81 Bitmap Flags 1 1 비트맵플래그 Reserved 2 18 First Cluster 20 4 시작클러스터주소 형식코드표현 형식코드 위치 크기 값 In Use 7 1 1 Category 6 1 0 Importance 5 1 0 Code 0 5 00011 Data Length 24 8 데이터길이 비트맵플래그표현 할당비트맵테이블은최대 2개 (TexFAT 사용시 ) 비트 크기 값 의미 7 1 Reserved 보통클러스터 2 번에위치 ( 가변적 ) 0 1 0 1 st Bitmap 데이터길이는바이트길이 0 1 1 2 nd Bitmap
exfat Directory Structure Allocation Bitmap Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type BitM Flags Reserved 0x10 Reserved First Cluster Data Length
exfat Directory Structure UP Case Table Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type Reserved1 Table Checksum Reserved2 0x10 Reserved2 First Cluster Data Length 데이터구조 필드명 위치 크기 설명 / 값 Entry Type Tpe 0 1 082 0x82 Reserved1 1 3 Table Checksum 4 4 테이블체크섬 Reserved2 8 12 형식코드표현 형식코드 위치 크기 값 In Use 7 1 1 Category 6 1 0 Importance 5 1 0 Code 0 5 00010 First Cluster 20 4 시작클러스터주소 Data Length 24 8 데이터길이 파일명을대문자로변환할때사용 ( 파일이름과검색문자열의비교 ) 테이블사용이전에체크섬계산필요
exfat Directory Structure UP Case Table Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type Reserved1 Table Checksum Reserved2 0x10 Reserved2 First Cluster Data Length
exfat Directory Structure Volume GUID Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type 2 nd Cnt Set Checksum General Primary Flags Volume GUID 0x10 Volume GUID Reserved 데이터구조 필드명 위치 크기 설명 / 값 Entry Type Tpe 0 1 0A0 0xA0 Secondary Count 1 1 항상 0x00 Set Checksum 2 2 형식코드표현 형식코드 위치 크기 값 In Use 7 1 1 Category 6 1 0 Importance 5 1 1 General Primary Flags 4 2 주요플래그 Code 0 5 00000 Volume GUID 6 16 볼륨 GUID 주요플래그표현 Reserved 22 10 필드위치크기값 Benign Primary 엔트리 하나만존재하고없을수도있음 Allocation Prossible No FAT Chain 1 1 Custom 2 14 0 1 0 No 0 Valid 1 Invalid
exfat Directory Structure Windows CE Access Control Table Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type Reserved 0x10 Reserved 데이터구조 필드명 위치 크기 설명 / 값 Entry Tpe Type 0 1 0E2 0xE2 Reserved 1 31 Benign Secondary 엔트리 형식코드표현 형식코드 위치 크기 값 In Use 7 1 1 Category 6 1 0 Importance 5 1 0 Code 0 5 00010 버전 1.0 에서는지원하지않음 ( 윈도우 CE 만지원 )
exfat Directory Structure File + Stream Extension + File Name Extension Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type 2 nd Cnt Set Checksum File Attributes Reserved1 Created Time Last Modified Time 0x10 Last Accessed Time Create 10ms Last Mod 10ms Creat ed TZ Last Mod TZ Last Acc TZ Reserved2 File Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type Gen 2 nd Flags Reser ved1 Name Len Name hash Reserved2 Valid Data Length 0x10 Reserved3 First Cluster Data Length Stream Extension Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type Gen 2 nd Flags File Name 0x10 File Name File Name Extension Entry
exfat Directory Structure File Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type 2 nd Cnt Set Checksum File Attributes Reserved1 Created Time Last Modified Time 0x10 Last Accessed Time Create 10ms Last Mod 10ms Creat ed TZ Last Mod TZ Last Acc TZ Reserved2 데이터구조 필드명 위치 크기 설명 / 값 Entry Type 0 1 0x85 Secondary Count 1 1 Set Checksum 2 2 File Attributes 4 2 파일속성 Reserved1 6 2 Created Time 8 4 DOS Timestamp 형식 Last Modified Time 12 4 DOS Timestamp 형식 Last Accessed Time 16 4 DOS Timestamp 형식 Created 10ms 20 1 생성시간 10ms 증가값 Last Modified 10ms 21 1 마지막수정시간 10ms 증가값 Created TZ Offset 22 1 생성시간 Timezone 위치 Last Modified TZ Offset 23 1 마지막수정시간 Timezone 위치 Last Accessed TZ Offset 24 1 마지막접근시간 Timezone 위치 Reserved2 25 7 형식코드표현 형식코드 위치 크기 값 In Use 7 1 1 Category 6 1 0 Importance 5 1 0 Code 0 5 00101 파일속성표현 속성 위치 크기 마스크 Reserved2 6 10 Archive 5 1 0x20 Directory 4 1 0x10 Reserved1 3 1 System 2 1 0x04 00 Hidden 1 1 0x02 Read Only 0 1 0x01
exfat Directory Structure File Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type 2 nd Cnt Set Checksum File Attributes Reserved1 Created Time Last Modified Time 0x10 Last Accessed Time Create 10ms Last Mod 10ms Creat ed TZ Last Mod TZ Last Acc TZ Reserved2 생성시간, 마지막수정시간, 마지막접근시간저장 10ms 단위의생성및마지막수정시간저장 각시간별타임존 (Time Zone) 저장 윈도우 XP 환경에서 10ms 단위의시간필드이상동작 ( 확인필요 )
exfat Directory Structure File Directory Entry File Deletion 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type 2 nd Cnt Set Checksum File Attributes Reserved1 Created Time Last Modified Time 0x10 Last Accessed Time Create 10ms Last Mod 10ms Creat ed TZ Last Mod TZ Last Acc TZ Reserved2 삭제전 삭제후
exfat Directory Structure Stream Extension Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type Gen 2 nd Flags Reser ved1 Name Len Name hash Reserved2 Valid Data Length 0x10 Rserved3 First Cluster Data Length 데이터구조 필드명위치크기설명 / 값 Entry Tpe Type 0 1 0C0 0xC0 General Secondary Flags 1 1 Reserved1 2 1 Name Length 3 1 이름길이 Name hash 4 2 이름해쉬 ( 디렉터리검색에사용 ) Reserved2 6 2 형식코드표현 형식코드 위치 크기 값 In Use 7 1 1 Category 6 1 1 Importance 5 1 0 Code 0 5 00000 2차플래그표현 필드 위치 크기 값 Valid Data Length 8 8 유효한데이터길이 Reserved3 16 4 First Cluster 20 4 시작클러스터 Data Length 24 8 데이터길이 Allocation Possible 0 1 No FAT Chain 1 1 Custom 2 14 0 No 1 Yes 0 Valid 1 Invalid
exfat Directory Structure Stream Extension Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type Gen 2 nd Flags Reser ved1 Name Len Name hash Reserved2 Valid Data Length 0x10 Rserved3 First Cluster Data Length 파일의크기및위치정보저장 파일이름해쉬 디렉터리검색속도향상 No FAT Chain 플래그 : 1 클러스터가연속적으로할당되어있음을의미 시작클러스터부터파일용량만큼획득
exfat Directory Structure Stream Extension Directory Entry File Deletion 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type Gen 2 nd Flags Reser ved1 Name Len Name hash Reserved2 Valid Data Length 0x10 Rserved3 First Cluster Data Length 삭제전 삭제후
exfat Directory Structure File Name Extension Directory Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type Gen 2 nd Flags File Name 0x10 File Name 데이터구조 필드명위치크기설명 / 값 Entry Tpe Type 0 1 0C1 0xC1 General Secondary Flags 1 1 0x00 File Name 2 30 파일명 15 글자 ( 유니코드 ) 할당이가능하지않음 시작클러스터및데이터길이필드가없음 최대 255 글자의파일명가능 17 개파일이름확장디렉터리엔트리필요 형식코드표현 형식코드위치크기값 In Use 7 1 1 Category 6 1 1 Importance 5 1 0 Code 0 5 00001 이차플래그표현 필드위치크기값 Allocation Possible 0 1 No FAT Chain 1 1 Custom 2 14 0 No 1 Yes 0 Valid 1 Invalid
exfat Directory Structure File Name Extension Directory Entry Multiple Entry 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type Gen 2 nd Flags File Name 0x10 File Name Reverse Engineering the Microsoft Extended FAT File System (exfat).pdf
exfat Directory Structure File Name Extension Directory Entry File Deletion 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 Entry Type Gen 2 nd Flags File Name 0x10 File Name 삭제전 삭제후
exfat Example Security is a people problem
exfat Example File(Not fragmented) Allocation C:\Downloads\proneer.txt (13KB) Cluster Heap Cluster Size : 4K FAT Allocation Bitmap 011110000 ~F8 ~FF Root Directory Cluster 300 ~03 0x85 (Attributes, Timestamp, ) ~FF ~05 ~FF UP Case Table 0x85 (Attributes, Timestamp, ) 0xC0 (Name, First clus, Data len) 300 0xC1 Downloads (File Name) 0xC0 (Name, First clus, Data len) 301 0xC1 proneer.txt (File Name) ~FF 300 00 301 302 303 304 305 00 00 00 00 00 Not Changed Real Data ~ ~ 300 301 302 303 304 305 306 00
exfat Example File(Not fragmented) Deletion C:\Downloads\proneer.txt (13KB) Cluster Heap Cluster Size : 4K FAT Allocation Bitmap 000000000 ~F8 ~FF Root Directory Cluster 300 ~03 0x05 (Attributes, Timestamp, ) ~FF ~05 ~FF UP Case Table 0x85 (Attributes, Timestamp, ) 0xC0 (Name, First clus, Data len) 300 0xC1 Downloads (File Name) 0x40 (Name, First clus, Data len) 301 0x41 proneer.txt (File Name) ~FF 300 00 301 302 303 304 305 00 00 00 00 00 Not Changed Real Data ~ ~ 300 301 302 303 304 305 306 00
exfat Example File(Fragmented) Allocation C:\Downloads\proneer.txt (13KB) Cluster Heap Cluster Size : 4K FAT Allocation Bitmap 011001100 ~F8 ~FF Root Directory Cluster 300 ~03 0x85 (Attributes, Timestamp, ) ~FF ~05 ~FF UP Case Table 0x85 (Attributes, Timestamp, ) 0xC0 (Name, First clus, Data len) 300 0xC1 Downloads (File Name) 0xC0 (Name, First clus, Data len) 301 0xC1 proneer.txt (File Name) ~FF 300 301 302 00 302 Real Data 305 303 304 305 00 00 306 Changed ~ 300 301 302 303 304 305 306 306 ~FF
exfat Example File(Fragmented) Allocation C:\Downloads\proneer.txt (13KB) Cluster Heap Cluster Size : 4K FAT Allocation Bitmap 000000000 ~F8 ~FF Root Directory Cluster 300 ~03 0x05 (Attributes, Timestamp, ) ~FF ~05 ~FF UP Case Table 0x85 (Attributes, Timestamp, ) 0xC0 (Name, First clus, Data len) 300 0xC1 Downloads (File Name) 0x40 (Name, First clus, Data len) 301 0x41 proneer.txt (File Name) ~FF 300 301 302 00 00 Real Data 00 303 304 305 00 00 00 Changed ~ 300 301 302 303 304 305 306 306 00
Quiz! Security is a people problem
Quiz! exfat FAT32 과다른점은? VBR (Volume Boot Record) 가가지는총섹터수는? Cluster Heap 영역에존재하는객체는? 한파일이가질수있는최대엔트리개수는? 파일의시간정보가저장되는엔트리는? 10ms 단위의시간이저장되는시간필드는? 각파일과디렉터리마다생성되는디렉터리엔트리의개수및종류는?
Quiz! exfat 비할당클러스터판별법은? 삭제된파일판별법은? 덮어써진파일판별법은?
Question & Answer