FAT32文件系统乱码的研究和分析

2016-03-22 01:07刘宏斌
科技传播 2016年1期

刘宏斌

摘 要 FAT32文件分配表是Windows操作系统磁盘分区格式的一种。采用32位的文件分配表,使其对磁盘的管理能力增强。本文通过文件系统出现乱码对FAT32的文件分配表进行研究和分析

关键词 FAT32:FAT:文件分配表;MBR;DBR

中图分类号 TP3

文献标识码 A

文章编号 1674-6708(2016) 154-0085-02

在日常生活中,U盘,SD卡,MP3,MP4等存储设备都有可能会产生一些乱码文件或者乱码文件夹,比如在磁盘正在读取或者写入的时候,直接把磁盘拔掉或者断电,再有主板上的接口或者接线不是太好,也会使磁盘出现I/O故障,这情况都会导致存储设备上的文件被损坏,好一点的情况出现乱码的文件名或文件夹名,差一点格式就会出现不对应打不开,还有就打开磁盘,就出磁盘损请你格式化磁盘,去格式化又显示格式化无法完成,以上这些情况说明了这些磁盘出现了不同程度的损坏。基本上可以定位在文件分配表出错了。

FAT32文件分配表是Windows操作系统磁盘分区格式的一种。采用32位的文件分配表,使其对磁盘的管理能力增强。又因FAT32分区内无法存放大于4GB的单个文件,且性能不佳,易产生磁盘碎片。硬盘分区已被性能更优异的NTFS分区格式所取代。FAT32目前常用于U盘,SD卡、TF卡等小容量存储设备。

首先,先要了解一下FAT32位分配表的结构

1) FAT32文件系统将逻辑盘的空间分为三块,分别是引导区(BOOT区)、文件分配表区(FAT区)、数据区(DATA区)。这两个区域合起叫作系统区域。

2) 引导区是从O扇区开始,使用连续3个扇区,用来保存这个每sector的BYTE数,每个簇所对应的sector数等一些重要的参数和boot记录,最后还有一部分作为保留扇区。

3) 文件分配表区(FAT区)保存了两个完全相同的文件分配表(FAT),因为文件所占用的存储空间(簇链)及空闲空间的管理全部是通过FAT表来实现的,FAT表非常重要,保存两个FAT表即便是第一个FAT表损坏了,还有第二个FAT表可以使用。

其次,还要了解文件目录表FDT(File DirectoryTable),即DIR区,也叫做ROOT区紧跟在分区表2的后面一个扇区开始,记录着根目录里面每一个文件(目录)的开始地址和文件的属性等。在定位文件位置时,系统会依DIR中存在的开始地址,再看FAT表就可以算出文件在这块硬盘的位置和大小。

如果是长文件名,每个表项就应该是64个字节,前32个字节作为链接说明;后32个字节就是文件的属性说明,其中有文件的长度、文件开始地址、创建的日期及时间。

根目录下面还包含有文件和子目录,子目录下面又包括有文件和下一级目录.一个子目录也要占用一个文件目录项,它的属性字节就变成了10H,文件的长度字节变为“00”。

下能通过一个案例来介绍FAT32文件系统出现乱码的分析。

手里有一个U盘,就一个分区,分区表格式为FAT32,通过磁盘管理的可显示容量,但是通过资源管理器打开发现所有的文件夹和文件的名称变成莫名其秒的名称,无法打开任何一个文件和文件夹,如图所示。

用R-Studio软件进行扫描,软件修复的目录结构根本无法打开。需要恢复的文件为里面又有子目录和文件,数量非常的多,,就算恢复出也无法使用了。如果采用RaW模式来修复,文件名将就要被更换,同样也是无法使用的。

根据这种现象进行分析,磁盘的容量能够正常显示,可以认为FAT表应该完好。但根目录下的文件夹及文件出现了其它不能出现在文件或文件夹的字符,可以肯定是根目录下的目录项出错。

用十六位编辑器WINHEX进行分析,手工修改目录项,使数据得以还原。

步骤如下:

1) 首先现在打开的是物理磁盘,为了方便分析,然后点击“分区1””来打开这个逻辑磁盘。打开有后,就会弹出如图所示的提示。

2) 看到这个提示框中出现的偏移处的值都是错误的,先定位到第一个显示的错误偏移DEE040H处,可以用菜单上面的“位置一>转到偏移量”,在弹出的窗口位置“转到偏移量”框内输入显示器第一个错误的“DEE040H”,跳转到这个偏移地址处,这个偏移地址就是25382号扇区的开始位置。这里要注意DEE20H处的有一个“E5”值,这是一个定义为磁盘内删除的标记。删除标记是目录区里的第一个字节,而目录区的第一个字节应该在本扇区里OOH、20H、40H、60H这些位置上,然而现在却向后面偏移了16个字节,但是前面一个扇区内偏移DEE020H处的E5所在的位置是正确的。说明了,这个地址DEE040H~DEE05FH16个字节是被非正常情况下加进来的。向后面看,向后翻过一个扇区,到到25383号扇区的开始位置,看到这个位置的目录项已经是正常的了,也就是说异常偏移了1个扇区。

3) 回过去再看错误列表,就会发现前面所显示的错误偏移都在这个扇区里面。通过DBR里的信息得知根目录是从25382扇区开始的,这个扇区在根目录内,这就是根目录下的文件和文件夹出现乱码的根本原因。

下面将这个扇区16字节删除,再把16后的内容写入到25382号扇区起始偏移处。保存这些后,重新加载,就会发现文件和文件夹都有正常珠显示出来了。