基于FAT32分区格式的U盘文件乱码的手工恢复研究

2017-06-06 12:00曹纪磊河南省交通高级技工学校
数码世界 2017年5期
关键词:U盘文件夹用户

曹纪磊 河南省交通高级技工学校

基于FAT32分区格式的U盘文件乱码的手工恢复研究

曹纪磊 河南省交通高级技工学校

FAT32作为一种常见的Windows分区格式,应用非常广泛,这种格式采用了32位的文件分配表,使其对磁盘的管理能力大大增强。例如现在许多U盘都是采用FAT32文件格式实现存储的。本文针对FAT32格式的U盘为例,借助WINHEX数据恢复软件进行了最为常见的U盘文件乱码故障的手动恢复。通过数据故障描述、数据丢失原因分析、数据恢复的思路及方法进行了深入的研究。

FAT32 数据恢复 目录 目录项

1 数据丢失故障描述

在日常的办公和生活当中,用户经常会遇到这样的麻烦:用户的一个U盘,容量1GB,其中有大量的文件和文件夹。所有这些文件都与用户的一篇论文有关系。因为同时在家里及单位的多台计算机上写这篇论文,为了方便用户把有关该论文的所有资料及论文本身都存放在这个U盘中,写论文时就把U盘插在计算机上,直接在U盘上编辑。就这样论文写了两个多月的时间,基本已经定稿。

一天用户来到单位,把U盘插在计算机上,像往常一样,双击U盘的盘符,但看到的并不是自己熟悉的文件,而是一堆乱码文件。

2 数据丢失的原因分析

详细询问用户都做了什么不当的操作,用户是也没做什么,就是头天晚上写论文到很晚,最终终于定稿,写完后想把U盘卸载,但是卸载不掉,于是就直接拔了下来。

问题应该就是出在这里了,没有按照正常方式卸载U盘,可能破坏了U盘内的文件系统结构。

做完镜像后直接用WinHex对镜像文件进行编辑,查看U盘的MBR、DBR扇区都没有问题。从DBR中可以看出分区用的是FAT32文件系统,对于FAT32的分区,打开后都是乱码文件的情况,问题很可能除在根目录区。为了慎重一些,还是先看看FAT表是否正常,查看了FAT1和FAT2,都完全正常,于是定位到根目录。

很明显根目录所在扇区的数据根本不是目录项,看起来像是某个文件的数据内容,文件系统把这些数据当目录项读取,打开分区当然就只能看见乱码了。

3 数据恢复的思路及方法

要恢复这个U盘的数据有很多方法,可以通过数据恢复软件扫描恢复,也可以手工分析并修复损坏的文件系统结构,从而恢复出数据。

用户说只要能恢复出来一个文件夹就可以了,文件夹名称为“9月20日最后定稿”。

经过询问用户,用户确定所需文件夹“9月20日最终定稿”就放在根目录下,并且用户清楚的记得,在该文件夹下放着“封面”、“目录与摘要”、“正文”等Word文档。

下面的工作就是去找文件夹“9月20日最终定稿”所指向的子目录了。只要能找到这个子目录所在的簇,然后到根目录区创建一个目录项指向该簇,就可以让文件夹“9月20日最终定稿”下的文件自动出现。

如何找到这个子目录所在的簇呢?方法有很多,下面介绍两种:

(1)搜索文件目录项

因为用户告知在文件夹“9月20日最终定稿”下面有“封面”、“目录与摘要”、“正文”等Word文档,所以可以搜索这些文件的目录项,就可以很清轻松地找到他们的子目录区。

(2)搜索“.”目录或“..”目录

因为子目录所在的簇的前两个目录一定是“.”目录和“..”目录的目录项,通过搜索这两个目录项中的其中一个,就可以找到子目录区。

字符“.”对应的十六进制数值为“2E”,所以要搜索其十六进制数值“2E”。因为文件目录中的文件名部分是8.3格式,没用完的字符会用空格填充,所以为了提高搜索的准确性,可以在“.”之后加几个空格,空格对应的十六进制值为“20”。

这里以搜索“.”的十六进制数值为例,因为U盘中的文件夹非常多,所以子目录区也会非常多,如何判断哪个才是我们要找的呢?首先要排除掉“..”目录项中“文件起始簇号”不为0的子目录区。因为“..”目录表示上级目录,我们要找的子目录的上级目录就是文件夹“9月20日最终定稿”,是根目录下的文件夹,所以其子目录区中的“..”目录的目录项“文件起始簇号”这个参数一定要是0,如图1所示。

图1中的第二条目录项就是“..”目录的目录项,画圈的四个字节为0,其上级目录就是根目录。

图1 “.”和“..”目录的目录项

图2 “..”目录项的结构

“..”目录项中“文件起始簇号”为0的子目录区,就都是根目录下的目录区了,但这样的子目录也很多,能不能让搜索更加精确一些呢?

用户说文件夹“9月20日最终定稿”是9月20日当天创建的,论文写完后就把最终稿移入了该文件夹。这样我们就可以把时间作为搜索条件,精确度就进一步提高了。

该如何利用这个时间呢,首先看看“..”目录项的结构,如图2所示。

文件目录项的偏移18H~19H处的两个字节就是文件最后修改日期。对文件夹来说,其修改时间很少改变,基本上总是与创建时间保持一致,而“..”目录项的“文件修改时间”也应该是9月20日,年份是2009.用前面讲过的日期换算方法,将2009年9月20日换算为十六进制数值,等于3B34H。

另外,我们要搜索的“..”目录项的起始簇号必须为0,所以我们现在可以搜索十六进制数值“343B000000000000”,来找我们要的目录项。搜索的具体设置如图3所示。设置好就开始搜索,结构很快就搜到了目标。

图3 搜索的设置

为了进一步验证,我们用模板看看“..”目录项后面的一条目录项,这条目录项的文件名是“封面.DOC”,修改日期正是“2009-09-20”,与用户说的都相符,可以确定这就是我们要找的子目录区了。

找到子目录区只完成了一半,下面要找到根目录区创建一个目录项指向该簇。该簇的簇号可以从“.”目录的目录项中查看到,因为“.”目录表示当前目录,其指向的簇号就是当前簇号。从“.”目录项中看到该簇号为十进制的1263簇。

下面返回到根目录区,把该簇的数据全部清零,然后创建一个文件夹的目录项指向1263簇。为了简单些,文件夹的名字就叫“123”吧。

具体创建的方法:先复制一个完整的文件夹的目录项放到根目录区,然后在此基础上修改。

最简单的方法就是直接把找到的子目录区中的“.”目录项复制到根目录区,再把文件名修改一下就可以了,修改时可以打开模板,这样比较方便。

只需要把文件名该为“123”就可以了,其他的都不要改。创建完的目录项如图4所示。

图4 打开模板修改目录项

修改完后存盘,然后用虚拟硬盘工具“Inspro Disk”加载该U盘的镜像就可以打开分区看到数据了。做到这一步,用户的数据就全部恢复成功了。

4 总结

在生活和工作当中,经常会遇到这样的经历:多年积累和收藏的数据因为病毒、人为或者不经意的被破坏、丢失或成为乱码。希望通过本文的分析与研究,可以把各位用户从数据丢失和毁坏的“噩梦”中走出来,不再受数据丢失的烦恼。“硬件有价,数据无价。”

[1]刘伟.数据恢复技术深度揭秘.电子工业出版社2013.9:84-100

[2]戴士剑,陈永红。数据恢复技术,电子工业出版社,2003

[3]汪中夏,戴士剑。数据恢复高级技术,电子工业出版社,2006

[4]刘丽君,张娅珊。FAT32文件数据手工恢复方法研究,湖北警官学院学报,2009

猜你喜欢
U盘文件夹用户
Fast Folders,让你的文件夹四通八达
自动辨认插口方向的U盘
让U盘起死回生
摸清超标源头 大文件夹这样处理
调动右键 解决文件夹管理三大难题
关注用户
关注用户
关注用户
关注用户
不容忽视的空文件夹