![文件恢复无签名(魔法数字)](https://linux22.com/image/1447555/%E6%96%87%E4%BB%B6%E6%81%A2%E5%A4%8D%E6%97%A0%E7%AD%BE%E5%90%8D%EF%BC%88%E9%AD%94%E6%B3%95%E6%95%B0%E5%AD%97%EF%BC%89.png)
如果文件头/页脚、签名已被更改/修改或删除,是否可以从磁盘映像(dd 映像)恢复文件?
我的意思是,例如位图图像(0x42 0x4d)的签名甚至前 30 个字节是否已被删除或更改?
如果没有,那么除了基于文件签名之外,还有什么其他方法可以恢复该文件?如果可以,该怎么做?
答案1
您可以分析残留的文件系统结构。
例如,FAT 系列文件系统通过在目录条目中用字节值 0x3F 覆盖文件名的第一个字节来指示文件已被删除。其余元数据(包括大部分文件名)在删除后仍会立即存在,因此直接访问磁盘而不是通过操作系统的程序可以轻松找到该文件,这就是 DOS“取消删除”命令的工作原理。
其他文件系统类似,但通常可用的信息较少——FAT 系列尤其容易恢复文件。
答案2
如果您知道要查找什么以及在哪里查找,那么您就可以。位图(未压缩)具有特定的统计属性,您可能能够重建它。
例如,预先知道图像宽度的可能范围将非常有益。了解其近似色度也会有所帮助。
真正的问题可能是文件本身可能被分割成不连续的扇区,而将其重新组合所需的信息也可能被删除。足够小以适合单个文件系统簇的位图最有可能被恢复。
需要考虑的另一种非常现实的可能性是,无论删除了什么前几个字节,也删除了剩余的字节,或者其中很大一部分,使得恢复变得毫无价值,即使可能的话。
要尝试恢复未压缩的 DIB 位图,您需要查找具有值以三元组形式变化的属性的字节序列(即,给定一个 N 字节序列,以索引模 3 取模的像素之间的相关性明显高于以任何其他非 3 的倍数的索引取模的像素之间的相关性)。然后,您需要检查是否存在与更高索引(即行宽四舍五入为最接近的 4 的倍数)的类似相关性。需要进行更多分析来确定行的开始/结束。
在不了解具体情况的情况下(文件系统、使用的实际位图格式、位图大小、它是如何被删除/覆盖的、dd 图像大小、操作原因),对于恢复的可能性,我只能给出“也许”的答案。