我已经能够将原始数据从无法访问的 USB 驱动器复制到大约 250MB 的整体文件中。在那个字节的某个地方大约有 40 个 Word 文档。
我在哪里可以找到有关 Word 文档内部结构的文档,以便我可以解析字节流、识别 Word 文档的开始和结束位置并提取副本?
是否有任何特定于该任务的任何编程语言的库?
谁能建议一个已经存在的软件解决方案来解决这个问题?
我已经能够将原始数据从无法访问的 USB 驱动器复制到大约 250MB 的整体文件中。在那个字节的某个地方大约有 40 个 Word 文档。
我在哪里可以找到有关 Word 文档内部结构的文档,以便我可以解析字节流、识别 Word 文档的开始和结束位置并提取副本?
是否有任何特定于该任务的任何编程语言的库?
谁能建议一个已经存在的软件解决方案来解决这个问题?
两种方法:
您可以在 linux 中将文件挂载为卷。如果您的二进制 blob 没有太损坏,您可能能够分解文件系统以找出文件所在的位置。它是(曾经)是 FAT 分区还是 NTFS?
如果这不起作用,我会寻找这个字节串:
D0 CF 11 E0 A1 B1 1A E1
这些是办公文档文件签名的“神奇字节”。它们可能会随机出现在其他数据中,但这是一个开始。如果文件碎片化,您将遇到主要问题。
此外,尝试按原样在 Word 中重新创建文档片段,将其保存到文件中并提取块以在 blob 中搜索(使用 grep 二进制文件或其他)。如果您有来自文件所有部分的信息,您应该能够在它们所在的 blob 中解码 WHERE。将其重新拼凑到一个有效的 DOC 二进制文件中似乎有些牵强,但恢复文本的其余部分应该不是不可能的。
Apache POI项目有一个用于读写各种 MS Office 文档的库。如果文件采用新的 XML 基本OOXML格式,您将在压缩 XML 时寻找 zip 文件的开头。