【国内电子数据取证厂商龙信科技】手机取证之文件碎片
一、碎片是如何产生的
假设系统正在向硬盘中写入一个名为“AAA”的文件,需要占用5个簇的空间,因此要完全写入到硬盘当中需要较长的时间。

磁头从1号簇开始写入文件,当2号簇中的数据写入完时,硬盘接到了一条新的命令写入新文件“BBB”,文件“BBB”体积较小,只需占用1个簇的空间,它被写入到了簇3当中。

这样一来,由于3号簇已经被占用,文件“AAA”剩下的数据就要从4号簇开始写入,最后,剩下的数据被写入到了4至6号簇。

由于“BBB”的插队,文件“AAA”无法储存在连续的簇当中,被分割开的这两段数据就被称为「磁盘碎片」。
硬盘经过一段时间的使用之后,内部储存的文件发生了一些变化:一个新文件“CCC”被写入到了硬盘当中,之后文件“BBB”被删除了。

这时,硬盘接到了写入文件“DDD”的命令,“DDD”需要占用3个簇的储存空间。

现在硬盘中共有两段不连续的可用空间,但任何一段单独的可用空间都不足以容纳整个“DDD”文件,所以“DDD”被拆分为两部分写入硬盘剩余的可用空间中,从而又产生了磁盘碎片。
二、文件系统与文件碎片
当一个存储设备建立了某个文件系统,那么接下来在这个设备上的数据存储都会按照操作系统对文件系统的分配规则来分配「存储单元」,因此文件会被分成指定大小的「数据块」写入设备。文件的每个存储块都由文件系统来管理。
三、数据恢复与文件碎片
今天我们不讨论文件系统层的数据恢复,只讨论文件碎片的恢复相关。
文件一旦碎片化存储在磁盘上,那么接下来的恢复都是比较麻烦的,举个例子来说明。

图上中我们可以看到,这个文件占用了10836个簇总数,但下面的碎片段是1,说明这个文件的所有簇在磁盘上是连续的。

再看图上中的文件,你会发现这个文件占用了26599个簇部分,而且有46个碎片片段,说明这个文件是由46个连续的碎片组成的不连续文件。
如果不考虑文件有被覆盖的情况,那么像图1中的文件可以通过文件签名很好的恢复出来;但如果同样用文件签名的方式来恢复图2中的文件就行不通了,因为它不连续,最好的情况也只能恢复找到第一个连续的片段。
好,下面我们来看看一个图片:

这是我用数据恢复软件签名恢复的一个图片文件。看图的下面空白部分,很明显是数据丢失了。
撇开软件的问题不谈,丢失的原因有两种:
第一,这部分数据已经被覆盖;
第二,这不是一个连续的碎片文件,而是由2个以上的碎片段组成的文件,文件签名只能找到第一段连续的,但后面的就没有办法找到了,所以就成这样了。
所以针对这种碎片化的数据恢复,我们会经常看到一种说法叫「碎片重组」。碎片重组是比较复杂的,因为我们如果要重组某个文件,就需要深入研究这个文件的格式和知道文件系统的分配规则,而文件格式各种各样,文件系统的规则也各不相同。
当然,碎片本身也要分情况来看。
如果运气好,所有碎片都是按扇区地址由小到大存储,恢复还是有很大可能的;
但要是运气不好,你遇到第一个碎片可能在低扇区,第二个碎片又在高扇区,而第三个也许跑到磁盘最后面去了!这种没什么规律的碎片存储就相当麻烦啦!
还有一点,就是不同的数据环境也会造成不同的复杂度,比如像录像监控机、行车记录仪等这种数据单一的设备相对来说会简单些。相比之下,要想在普通PC的NTFS下重组一个文件,这个非常复杂的数据环境就很不好处理了。
注:这里只考虑普通的机械盘下的正常IO操作,不考虑文件修复等。
