我有一个已格式化并重新安装了操作系统的硬盘。
问题是,格式化之前它无法启动,并且格式化之前我所做的数据备份由于某种原因没有所有文件。
缺少 Microsoft Word *.docx 文件。
现在我尝试使用Puran 文件恢复但它没有预先内置 *.docx 扩展名扫描条目。Puran
File Recovery 有一个选项,让我们创建自定义条目,我发现文件签名网起始字节签名,所以现在我能够在硬盘中找到许多 *.docx 标头。
我现在的问题是,我找不到任何地方结束字节*.docx 文件,以便我能够恢复一些文件。
答案1
A.docx
文件只是一个.zip
文件。Zip 文件的结构如下:
Zip 文件的结尾由中央目录记录结束(欧共体发展委员会)EOCD 的长度是可变的,因为它可以包含最多 65535 个字节长的注释。请参见下面的 EOCD 布局的粗体部分:
+---------+--------+--------------------------------------------------------------------------------+ | 偏移量 | 字节 | 描述 | +---------+--------+--------------------------------------------------------------------------------+ | 0 | 4 | 中央目录签名结束 = 0x06054b50 | | 4 | 2 | 该磁盘的编号 | | 6 | 2 | 中心目录起始的磁盘 | | 8 | 2 | 此磁盘上的中心目录记录数 | | 10 | 2 | 中央目录记录总数 | | 12 | 4 | 中心目录的大小(字节)| | 16 | 4 | 中央目录开始相对于档案开始的偏移量 | | 20 | 2 | 评论长度(n)| | 22 | n |评论 | +---------+--------+--------------------------------------------------------------------------------+
表格来自维基百科»Zip(文件格式)»中央目录记录结束 (EOCD)
您可以通过查找0x06054b50
(EOCD 的开头)然后计数其后的 16 个字节来获取 Zip 文件的结尾。将接下来的两个字节设置为0x0000
忽略注释,现在您应该已经获得了有效 Zip 文件的结尾。
笔记:这没有考虑文件系统碎片。如果.docx
/.zip
文件在磁盘上碎片化,您的恢复方法将不起作用,因为您找到的签名将被破坏。您需要文件系统中的一些信息才能将碎片文件拼凑在一起;开始和结束签名没有这些信息。
相簿是我以前使用过的一款软件,它有一些技巧可以帮助我拼凑碎片文件。 对你来说至关重要的是,PhotoRec 内置了对 Zip 文件的支持,所以你可能想要尝试 TestDisk/PhotoRec如果您当前的签名搜索策略不适合您。
答案2
Deltik 的回答是正确的。以下是一些可能有用的信息:
从十六进制编辑器(例如 xxd)或者字节寻址序列的角度来看,End-Of-Central-Directory Header 的字节序列实际上将显示为 504b0506(反向顺序)。
在有效的 OpenOfficeXML 文件(例如 .docx 文件)中,永远不会有中央目录结束注释(请参阅ECMA-376,第2部分,第 76 页:“ZIP 文件注释”不应产生。但是,消费者无论如何都应该支持阅读包含此类注释的文件。)
此外,不支持多磁盘存档(请参见第 75 页),因此“此磁盘的编号”字段和“中央目录起始的磁盘”字段始终为 0。此外,“此磁盘上的中央目录记录数”和“中央目录记录总数”字段应该相等。
总而言之,任何 .docx 文件的最后 22 个字节应始终具有以下形式
50 4b 05 06 00 00 00 00 ## ## ## ## ## ## ## ## ## ## ## ## 00 00
| signature |disk |CD- |num. |num. |size of CD | CD offset |comment
| |num. |disk |recs |recs | | |length