最近研究了一下FAT32文件系统,我本以为删除文件就是在目录项FDT加上E5标记,但文件的簇链还是保存在FAT表里,恢复被删除的文件只要从带有E5标记FDT项里把E5标记换成文件的头个字母就行了,但是做实验发现文件被删除后,FAT表对应的项也被删了,就是说原文件的簇链不存在了,那反删除软件怎么恢复的啊? 

解决方案 »

  1.   

    FAT文件系统结构简述及反删除原理
    FAT(文件分配表)
    FDT(文件目录表)有的也称为DIR(根目录表)
    FAT是与FDT合作完成磁盘资源管理的,FAT在DBR(DOS Boot Record)之后,DBR中包括一个引导程序和一个被称为BPB(BIOS Parameter Block)的本分区参数记录表。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、簇的大小等重要参数。
    FAT中有若干项,在FAT16(16 bit=两字节)中每项占两字节,FAT32中每项占4字节,每项代表磁盘上的一个族,每一项的值是某个单向链中的一个指针,如FAT中某项值为100,则表示在磁盘第100族还有数据,在读该族数据后系统会再去读取FAT第100项的值,如果不为表示结束的0xFFFF或0xFFFFFFFF则读该项对应的族数据,循着链表一直读到结束为止。
    一般每个分区有两个相同的FAT表,在第二个FAT表后是FDT表,它的大小是固定的,一般只有一个族,这也是根目录下项数有限的原因,FDT每项占32字节,如果族大小为4K,则最多4096/32=128项,每项内容有文件名、起始FAT项指针、类型(是文件还是目录)、创建时间、修改时间、访问时间等(好像没记完),最重要的就是指向FAT的指针,用它才可以读出文件的内容。
    FDT后就是以族为分配单位的DATA区了,那怕文件只有一字节它也会占一个FAT项,即一个族。应该对FAT的分配方式有个了解了吧,顺便讲讲反删除的原理在FDT中,删除一个文件时,系统只是简单地将FDT表项中的文件名的第一个字节改为00,而FAT指针等数据都还在,这时恢复就只需要将第一字节改来不为00就可以了,这就是为什么恢复软件会让你输入文件名的第一个字。
    但并不一定恢复成功,因为当文件标示删除后,它的所有数据都不受操作系统保护了,有可能造成以下问题:
    1、FDT项文件名第一项为00时表示该项已可重用,则建立新文件时有可能覆盖掉FDT数据。
    2、FAT中有可能被新建立文件数据覆盖。
    3、磁盘整理也可能覆盖族里的数据。