前言
进行电子数据取证的时候,难免会遇到需要数据恢复的时候,掌握一定的数据恢复知识还是有必要的。
参考书籍:<<电子数据取证>>
正文
FAT(File Allocation Table,文件分配表)文件系统是一种专用文件系统,简称FAT。在FAT中,每个被分配的簇都包含一个指针,该指针指向”下一个簇”,或指向簇链结束标记的特殊地址。例如在FAT12中结束标记为0xfff,在FAT16中为0xffff,在FAT32中为0xfffffff。
扇区:扇区是硬盘读写的基本单位,一般情况下每扇区的大小是512字节。在硬盘中每个扇区都有自己的编号,从零开始编号。
簇:文件系统中用簇来做数据存储的单位 。
簇大小是2的整数次幂,最大是128扇区每簇
FAT表:文件分配表( File Allocation Table)用来描述文件系统内存储单元的分配状态及文件内容的前后链接关系的表格
根目录的起始簇号:也是数据区的开始位置(一般为2号簇)
放一下前人总结好的格式,FAT布局和结构:
用WINHEX打开样例,00-02:EB5890
03-0A:文件版本,5.0
0B-0C:扇区字节数,512
0D: 每簇的扇区数:16
FAT表起始扇区号:8228
1C-1F:隐藏扇区
20-23:总扇区数
24-27:FAT表的大小
2C-2F:根目录所在的簇号
32-33:DBR的备份扇区位置:
FSINFO扇区数据结构:
扩展引导标志RRaA
空闲簇数
下一个可用簇
FAT表相关知识:
文件分配表( File Allocation Table)用来描述文件系统簇的分配状态及文件内容的前后链接关系的表格
每个FAT表项占4个字节,(因为每个字节有8Bit,所以FAT表项有32Bit,文件系统名FAT32就是这么来的) 所以每个扇区有128个FAT表的表项
0号表项 是“F8FFFF0F”,可以当做是FAT表的签名标志
FAT表从2号表项开始记录,数据区的每个簇号都有一个FAT表项对应
每个FAT表项记录着文件或目录的下一个簇号
FAT2是FAT1的备份
FAT2的起始扇区号=FAT1的起始扇区号+FAT表大小
用 “FFFFFF0F”来表示文件或目录的结束簇号
用“FFFFFFF7”来表示坏簇
根目录和短文件名目录项相关知识:
绝大多数情况下根目录都是2号簇
根目录的位置计算公式:FAT的起始扇区号+
FAT表的大小 * 2
FAT表起始扇区号4110
FAT表的大小
最后的结果
根目录:
目录项分为短文件名目录项和长文件名目录项。
“.”目录项表示这个目录本身
“..”目录项表示这个目录的父级目录
如果文件名不到8个字符,用0x20填充
如果文件名超过8个字符时则会被截断,提取前6个字符再加“~1”(如果有同名目录项,这个数值会加1),然后再加上扩展名
前人总结的数据结构:
创建时间
最后修改时间
文件大小
当文件被删除,头部变成E5
起始簇号的计算方法:
起始簇号 = 低16位的数值+(高16位的数值 *65536)
通过FAT表查找文件
去3905找不到文件
继续往下找
然后如果还是没找到,就循环重复,或者直接全盘搜索。
当文件名超过8个字节时,就需要用长文件名目录项来存储文件名。
长文件名目录项的0x0B位置的标志一定是0x0F
长文件名目录项是用Unicode编码存储文件名的
长文件项的目录结构:
可以通过两个目录项的扇区差和簇差,算出簇的大小。
算出簇的大小
winhex自带有一个恢复功能,是根据文件类型来恢复文件
原文始发于微信公众号(Th0r安全):电子取证之Fat32基础与半通用恢复