@Oli-嗨,我叫Jim Salter,是写这篇文章的人。我正在使用虚拟机,这使事情变得更简单。我所做的是从JPEG文件开始的,然后在十六进制编辑器中将其打开。我使用的特定版本是Bless,您可以使用简单的apt-get install bless将其安装在Ubuntu中。
在Bless中打开JPEG后,我按了几次向下翻页以完全了解JPEG的“内容”,然后仅突出显示大约50个字节的数据,然后将其复制并粘贴到文本编辑器中(在我的情况下,gEdit)。这给了我一些要寻找的东西。
现在,我将JPEG保存到VM的每个阵列中。阵列后面的存储是一系列.qcow2文件。将JPEG保存到数组中后,可以将与每个数组关联的.qcow2文件加载到Bless中,然后搜索它们-它们不是很大,除了JPEG和一些元数据外,只能找到该50字节模式我已突出显示并复制出JPEG。瞧,我有腐败的块!此时,我可以使用Bless手动编辑存储在VM虚拟磁盘上的JPEG的各个字节,而且重要的是,在每个阵列上的编辑方式也完全相同。
唯一的麻烦是,就本文中测试的RAID5阵列而言,我必须确保编辑的是条带中数据的实际副本,而不是条带本身的奇偶校验-这是在磁盘上的小映像。否则为空数组,因此该条带中的FOLLOWING块中没有任何数据,从而使奇偶校验块包含该数据块中未更改的数据。如果我不小心编辑了奇偶校验块而不是数据块,则图像将显示为不变。
最后一点-您不需要虚拟机来执行此操作-您可以使用裸机以相同的方式执行相同的操作;这将使您更加痛苦,因为您需要使用整个原始驱动器而不是使用小的.qcow2文件,并且您必须拉出驱动器并将它们放入另一台计算机中,或者引导到实时(或只是备用)环境中以使其混乱。(我完全以此方式测试了ZFS的数据恢复,但是在7年前的真正的裸机上,当我第一次对下一代文件系统产生兴趣时。)
希望这可以帮助!