格式化的底层分析
格式化就是给分区创建一个文件系统。首先看一个有数据的ExFAT分区,然后将其格式化,并分析格式化后原来数据的改变。
图4-559是一个ExFAT分区“H”中的数据,有一个文件“456.txt”和一个文件夹“123”。
图4-559 一个ExFAT分区中的数据
文件夹“123”下有一个文件“sjhf.txt”,如图4-560所示。
图4-560 文件夹“123”下的文件“sjhf.jpg”
该分区的FAT表的部分内容如图4-561所示。
图4-561 分区“H”的FAT表的部分内容
该分区簇位图文件的部分内容如图4-562所示。
图4-562 簇位图文件的部分内容
簇位图文件的内容只有一个字节“BFH”,换算成二进制等于“10111111”,说明2、3、4、5、6、7、9号簇被使用,其他簇为空簇。
该分区根目录的内容如图4-563所示。
图4-563 分区根目录的部分内容
根目录中应该有9个目录项:“①”是卷标的目录项,该分区卷标为“数据恢复”;“②”是簇位图文件的目录项;“③”是大写文件的目录项;“④、⑤、⑥”是文件夹“123”的目录项;“⑦、⑧、⑨”是文件“456.txt”的目录项。
文件夹“123”下的文件“sjhf.txt”的文件目录项如图4-564所示。
图4-564 文件夹“123”下的文件“sjhf.txt”的文件目录项
“sjhf.txt”开始于9号簇,大小是50字节,转到9号簇,其内容如图4-565所示。
图4-565 文件“sjhf.txt”的内容
分析完以上结构后将这个ExFAT分区“H”格式化。格式化完再来看这个分区的FAT表,发现FAT表与格式化前完全一样,如图4-566所示。
图4-566 格式化后的FAT表
但这里并不是说ExFAT格式化不改变FAT表,其实ExFAT格式化会把FAT表第一个扇区的原有数据清零,并写入元文件和根目录对应的FAT项。该分区的FAT表第一个扇区的数据格式化前后没有变化是因为元文件及根目录占的位置及大写文件在格式化前后没有发生改变。
再看看格式化后的簇位图文件,该分区簇位图文件的内容如图4-567所示。
图4-567 格式化后簇位图文件的部分内容
簇位图文件的内容只有一个字节“0FH”,换算成二进制等于“00001111”,说明2、3、4、5簇被使用,其他簇为空簇,其中簇位图文件占用2号簇,大写文件占用3、4两个簇,根目录占用5号簇。
该分区根目录的内容如图4-568所示。
图4-568 格式化后分区根目录的部分内容
根目录中只剩下3个目录项,分别是卷标的目录项、簇位图文件的目录项和大写文件的目录项,其他的目录项已被清零。
再看文件夹“123”下的文件“sjhf.txt”的文件目录项,如图4-569所示。
图4-569 格式化后“sjhf.txt”的文件目录项
可以看到文件夹“123”下的文件“sjhf.txt”的文件目录项依然存在,没有任何破坏。跳转到“sjhf.txt”文件的开始位置9号簇,其内容如图4-570所示。
图4-570 文件“sjhf.txt”的内容
很明显,文件“sjhf.txt”的内容也完好无损。
格式化之后文件的恢复
从前面的分析可以知道,ExFAT文件系统格式化之后,FAT表中如果有簇链,第一个扇区的簇链会清零,根目录区中的用户文件目录项也被清零,所以根目录下的文件就很难被恢复了,因为没有目录项就无法知道这些文件名及它们存放的地址。
子目录的目录项还保存着,没有被清零,所以子目录下的文件是有机会恢复的。例如“sjhf.jpg”这个文件,从图4-569中可以看出文件开始簇号为09H,文件大小为32H(十进制值为50),跳转到9号簇,连续选中50字节,并另外保存,就可以将文件恢复。
这种方法只适用于文件连续存放及文件的数据没有被覆盖的情况。如果文件不连续,或者文件的数据已经被覆盖,这样恢复出来的数据就是不正确的。