当我们在计算机上执行删除命令时,我们会习惯性的以为数据是真的“消失”了,尤其是对数据进行格式化之后,更会误以为数据被彻底“消除”了,然而事实并非如此,虽然我们自己看不见数据,可是这些被删除或格式化的数据能够被轻易的恢复。
对于这个问题,您得先对硬盘存储方式有一定的了解,我们都知道,电脑中通用的代码为二进制,这意味着各种指令、程序、数据在电脑中都以0和1两个数字来表示。因此,我们在电脑中所存储的各种文件实质上全都是一系列0、1组成的字符串,无论是闪存式还是硬盘式的存储设备,它们的大部分空间都用来保存这一串串的代码。
在计算机磁盘中,数据存储在磁盘盘片的磁道上,磁道在盘片是呈同心圆分布的,磁头在同心圆的盘片表面移动就以访问硬盘的各个区域。当存储文件时,文件不一定是按顺序存放在盘片上的,因为磁道的分布特性,文件随机地分布在各个位置也能被快速访问,这样做数据存储就更加灵活了,一个文件的不同部分可以存储在不同的地方,避免了必须找到一块与文件大小相符的磁道才能进行存储。磁盘上的数据以簇为分配单位,假设某磁盘1簇为4K,无论多大的文件最少都要占有4K的空间,而大的文件可能占用多达数千、数万的簇。Windows是怎么删除文件数据的呢?其实在我们执行删除命令时,Windows 会把文件名称的第一个字母改成一个特殊字符,然后把该文件占用的簇标记为空闲状态,等待下一个数据来使用。这时,文件其实并没有被真正删除,它还停留在磁盘上,通过多次反复存储,旧的文件数据才会被“清除”。其他操作系统也与此类似。
数据还可能隐藏在某些意料之外的地方,当磁头向磁盘写入文件时,文件的最后一部分通常不会恰好填满最后一个扇区,这时操作系统就会随机地提取一些内存数据来填充空余区域,这种数据被称为RAM Slack(内存渣滓);最后一个簇中没有用到的扇区保留以前的数据原封不动,被称为 Drive Slack(磁盘渣滓)。这些地方都是容易被忽略的地方,却可能包含大量的敏感信息。