FAT32下有效数据快速恢复方法
引言
随着计算机等数字设备在工作和生活中应用的日益广泛,不论原因是来自客观设备失败(如存储介质损坏,数据写人设备时发生掉电或由其他灾难而引起的写操作异常)还是来自用户的主观操作(误删除、误格式化、病毒篡改),电子文件数据丢失问题日益突出,“电脑有价,数据无价”被人们所认可,数据修复技术成为计算机应用的重要组成部分。
当前,大多数数据恢复软件存在以下两个问题:
1)基于文件系统结构来开发。
恢复软件自身空间占用存储较多、搜索速度较慢、当文件目录被严重破坏时(如分区损坏、NTFS下存储文件记录的$MFT文件损坏,FAT文件系统下的FAT表损坏)数据很难恢复。当然,对于硬盘空闲扇区中隐藏数据的提取也基本无能为力。
2)着重于数据层面的完整性保护。
当数据文件的结构被严重破坏时(如文件标志头丢失、文件有效信息存储区域的部分数据被覆盖或破坏等)即使操作系统目录结构存在,但由于数据文件本身的完整性被部分破坏,当下流行的方法基本无法恢复或恢复后的文件不能使用(目前已经商用的修复软件修复效果大多也差强人意)。
对于用户而言,快速获得一个可用的数据往往比得到一个完整程度更高但却无法打开或无法正常显示使用的文件更有实用价值。针对数据灾难,本文方案强调文件恢复速度和内容层面恢复的可用性,使得用户有效信息数据能够得到最大限度的恢复。
1FAT32文件系统、在个人电脑应用中Windows操作系统占有很大分量,FAT32和NTFS是Windows主流应用的文件系统。特别是FAT32文件系统被众多的数码设备所支持(NTFS虽然拥有不少优势但不适合作移动存储,FAT16通用性强但最大只能支持2GB分区,新的ExFAT文件系统支持的设备较少。
1.1数据存储结构
硬盘中的数据包括硬盘主引导扇区MBS、操作系统引导记录DBR、文件分配表FAT和数据区DATA四部分。其中主引导扇区内容主要包括主引导记录MBR和分区表DPT,由分区工具产生;其余三部分由格式化工具在磁盘格式化时生成。这四部分中和数据恢复相关的主要是MBR中偏移地址1BEH~1FDH处的硬盘分区表DPT、DBR中的BPB参数、文件分配表FAT和数据区开始部分的根目录FDT[2]。
1.2数据删除原理
数据文件删除主要有以下几种方式:
1)把文件删除后放人回收站。
此时,操作系统把该文件对应目录项中文件名的第一个字符改为“E5”,其他各项不变。如果用户进行文件还原的话将再新建一个目录项,指向原始数据;如果在回收站中进一步删除或清空回收站的话系统将清空该文件占用的相关fat表项。
2)使用“Shift+Delete"”一步彻底删除文件。
此时该文件对应目录项中文件名(包括长文件名中表示序列号的第一字节)的第一个字节改为“E5”;短文件名偏移地址“14H~15H”处(表示文件存放首簇号的高位地址)改为“00H00H”;FAT表中相关表项清零,其他不变。
3)通过删除文件夹形式删除其中文件。
文件夹目录项首宇节改为“E5”,起始簇号高位的两个字节也被清零,对应FDT偏移“1DH”处改为“80H”,文件夹中所有文件FDT的第一个字节改为“E5”,起始簇号高位地址两个字节写0(作者在Windows7下多次实践均将高位复位,和许多资料介绍有别),并释放FAT表中相关内容的地址簇链。
4)通过格式化方式快速删除大批文件。
根目录清空、对应FAT表项全部清零释放。
2有效数据恢复
通过以上分析并经实验验证表明:大多数情况下,数据被有意或过失删除后,除非存储介质非常小(高位不使用或很少使用),否则文件一旦删除想要完整恢复非常困难(特别是在目录无法完整恢复时),尽管是在文件数据并未真正删除的前提下。
许多学者做了大量工作,想了许多方法t3-7]。归结起来有两种思路:一是基于推测,即假定存在与被删除文件同时(日期相同或相近)保存的文件,则利用该文件的高位地址;二是穷举,即计算出整个硬盘空间的最大地址,以该地址为范围逐个进行匹配,必要时可结合文件的特征字进行。这是因为,大多数情况下数据文件删除后其对应FDT项中指示文件首字节的高位簇号被改为了“00H00H”,尤其是面对当前动则数TB的大硬盘更是如此。文件数据如果不是连续存储的情况下,在FAT表被清空后有时虽然用数据恢复软件找回了目录和文件名,但经常(和操作系统文件分配策略有关)出现其中内容打不开或打开后是乱码的情况。
2.1复合文档分析
复合文档[8]是微软开发的一种文件存储结构,在一个文件里可以嵌人文本、图形、图像、电子表格数据等其他各种文档,这些文件中内嵌的文档具有目录结构。常见的Office文档(如Word、Excel、PowerPoint、Visio)、保存QQ聊天记录的MsgEx.db文件、存放图片的文件夹中缩略图文件Thumbs,db都属于这种格式。关于复合文档存储方面的现有资料绝大多数是从第三方获得,且以开源的[1°]为基础,推测部分不少。微软公司2008年首次公布了Office复合文档格式规范[11],后来又多次补充完善[12]。本文以2012年微软官方资料为基础[13],以电子文档中应用最广泛的微软Office办公套件中Word文档为例加以介绍[14]。
Word版本较多,从Word2010开始默认生成文档后缀名为docx”,而Word97-2007生成文档的扩展名为“•doc”,两者文件结构完全不同。
“.docx”格式的文档和常用的扩展名为ZIP压缩文件格式(WinZip)存放相同处较多,存储时以“0x504B030414”等十六进制关键字为开始。文件中有效数据提取时,只需将docx”文档的扩展名改为zip”,解压后可得到相应数据。
“.doc”格式的复合文档中通过红(用0表示)、黑(用1表示)二叉树形式的数据结构来组织虚拟的数据流信息,没有固定结构,一般包括:Main主数据流、Summaryinformation数据流(描述摘要格式).Table数据流、Data数据流、CustomXML存储(在Word2007中增加)、0或多个object数据流(嵌人式对象的二进制数据)。各个节点(Node)的颜色不是红色就是黑色,根节点称为根目录(RootDirectory)。各节点所存放的数据流满足:
1)根节点一定为黑色节点;
2)存储流标识SID相邻的存储流节点不能同时为红色节点;
3)任意节点的左孩子节点的存储流名必须小于右孩子节点的存储流名。
随着计算机等数字设备在工作和生活中应用的日益广泛,不论原因是来自客观设备失败(如存储介质损坏,数据写人设备时发生掉电或由其他灾难而引起的写操作异常)还是来自用户的主观操作(误删除、误格式化、病毒篡改),电子文件数据丢失问题日益突出,“电脑有价,数据无价”被人们所认可,数据修复技术成为计算机应用的重要组成部分。
当前,大多数数据恢复软件存在以下两个问题:
1)基于文件系统结构来开发。
恢复软件自身空间占用存储较多、搜索速度较慢、当文件目录被严重破坏时(如分区损坏、NTFS下存储文件记录的$MFT文件损坏,FAT文件系统下的FAT表损坏)数据很难恢复。当然,对于硬盘空闲扇区中隐藏数据的提取也基本无能为力。
2)着重于数据层面的完整性保护。
当数据文件的结构被严重破坏时(如文件标志头丢失、文件有效信息存储区域的部分数据被覆盖或破坏等)即使操作系统目录结构存在,但由于数据文件本身的完整性被部分破坏,当下流行的方法基本无法恢复或恢复后的文件不能使用(目前已经商用的修复软件修复效果大多也差强人意)。
对于用户而言,快速获得一个可用的数据往往比得到一个完整程度更高但却无法打开或无法正常显示使用的文件更有实用价值。针对数据灾难,本文方案强调文件恢复速度和内容层面恢复的可用性,使得用户有效信息数据能够得到最大限度的恢复。
1FAT32文件系统、在个人电脑应用中Windows操作系统占有很大分量,FAT32和NTFS是Windows主流应用的文件系统。特别是FAT32文件系统被众多的数码设备所支持(NTFS虽然拥有不少优势但不适合作移动存储,FAT16通用性强但最大只能支持2GB分区,新的ExFAT文件系统支持的设备较少。
1.1数据存储结构
硬盘中的数据包括硬盘主引导扇区MBS、操作系统引导记录DBR、文件分配表FAT和数据区DATA四部分。其中主引导扇区内容主要包括主引导记录MBR和分区表DPT,由分区工具产生;其余三部分由格式化工具在磁盘格式化时生成。这四部分中和数据恢复相关的主要是MBR中偏移地址1BEH~1FDH处的硬盘分区表DPT、DBR中的BPB参数、文件分配表FAT和数据区开始部分的根目录FDT[2]。
1.2数据删除原理
数据文件删除主要有以下几种方式:
1)把文件删除后放人回收站。
此时,操作系统把该文件对应目录项中文件名的第一个字符改为“E5”,其他各项不变。如果用户进行文件还原的话将再新建一个目录项,指向原始数据;如果在回收站中进一步删除或清空回收站的话系统将清空该文件占用的相关fat表项。
2)使用“Shift+Delete"”一步彻底删除文件。
此时该文件对应目录项中文件名(包括长文件名中表示序列号的第一字节)的第一个字节改为“E5”;短文件名偏移地址“14H~15H”处(表示文件存放首簇号的高位地址)改为“00H00H”;FAT表中相关表项清零,其他不变。
3)通过删除文件夹形式删除其中文件。
文件夹目录项首宇节改为“E5”,起始簇号高位的两个字节也被清零,对应FDT偏移“1DH”处改为“80H”,文件夹中所有文件FDT的第一个字节改为“E5”,起始簇号高位地址两个字节写0(作者在Windows7下多次实践均将高位复位,和许多资料介绍有别),并释放FAT表中相关内容的地址簇链。
4)通过格式化方式快速删除大批文件。
根目录清空、对应FAT表项全部清零释放。
2有效数据恢复
通过以上分析并经实验验证表明:大多数情况下,数据被有意或过失删除后,除非存储介质非常小(高位不使用或很少使用),否则文件一旦删除想要完整恢复非常困难(特别是在目录无法完整恢复时),尽管是在文件数据并未真正删除的前提下。
许多学者做了大量工作,想了许多方法t3-7]。归结起来有两种思路:一是基于推测,即假定存在与被删除文件同时(日期相同或相近)保存的文件,则利用该文件的高位地址;二是穷举,即计算出整个硬盘空间的最大地址,以该地址为范围逐个进行匹配,必要时可结合文件的特征字进行。这是因为,大多数情况下数据文件删除后其对应FDT项中指示文件首字节的高位簇号被改为了“00H00H”,尤其是面对当前动则数TB的大硬盘更是如此。文件数据如果不是连续存储的情况下,在FAT表被清空后有时虽然用数据恢复软件找回了目录和文件名,但经常(和操作系统文件分配策略有关)出现其中内容打不开或打开后是乱码的情况。
2.1复合文档分析
复合文档[8]是微软开发的一种文件存储结构,在一个文件里可以嵌人文本、图形、图像、电子表格数据等其他各种文档,这些文件中内嵌的文档具有目录结构。常见的Office文档(如Word、Excel、PowerPoint、Visio)、保存QQ聊天记录的MsgEx.db文件、存放图片的文件夹中缩略图文件Thumbs,db都属于这种格式。关于复合文档存储方面的现有资料绝大多数是从第三方获得,且以开源的[1°]为基础,推测部分不少。微软公司2008年首次公布了Office复合文档格式规范[11],后来又多次补充完善[12]。本文以2012年微软官方资料为基础[13],以电子文档中应用最广泛的微软Office办公套件中Word文档为例加以介绍[14]。
Word版本较多,从Word2010开始默认生成文档后缀名为docx”,而Word97-2007生成文档的扩展名为“•doc”,两者文件结构完全不同。
“.docx”格式的文档和常用的扩展名为ZIP压缩文件格式(WinZip)存放相同处较多,存储时以“0x504B030414”等十六进制关键字为开始。文件中有效数据提取时,只需将docx”文档的扩展名改为zip”,解压后可得到相应数据。
“.doc”格式的复合文档中通过红(用0表示)、黑(用1表示)二叉树形式的数据结构来组织虚拟的数据流信息,没有固定结构,一般包括:Main主数据流、Summaryinformation数据流(描述摘要格式).Table数据流、Data数据流、CustomXML存储(在Word2007中增加)、0或多个object数据流(嵌人式对象的二进制数据)。各个节点(Node)的颜色不是红色就是黑色,根节点称为根目录(RootDirectory)。各节点所存放的数据流满足:
1)根节点一定为黑色节点;
2)存储流标识SID相邻的存储流节点不能同时为红色节点;
3)任意节点的左孩子节点的存储流名必须小于右孩子节点的存储流名。