下午好,
我正在寻找有关使用 KeyNote 文件(~2017 版本 8.x)的一些见解。
我的目标是相当基本的。我只想从大约 3000 个 KeyNote 文件中提取文本和图像。由于许多工具的年代久远,我正在使用 Python 2.7,但我最终想升级到 3.x 或 4.x。尽管进行了大量阅读和实验,但我发现从 IWA 对象中提取消息时遇到了困难。
我一直在尝试各种方法,也一直在尝试使用 protobuf 编码信息手动解构 IWA 文件。然而,有些事情并没有加起来。使用使用 Protobuf 示例代码创建的消息进行测试我可以 100% 解构,但是来自 KeyNote 文件的 .IWA 块最终会出现无效的线路类型、重复的字段编号或没有意义的字段大小(例如,大于 IWA 的大小堵塞)。
我想我知道的。
1/ .key 文件是一组压缩的对象,可以使用 zipfile 等通用模块解压缩。解压缩后,可以分离密钥文件,以访问/index 分支和组成 IWA 对象。
2/ IWA 文件有一个 4 字节的 little endian 标头,其余的应遵循 google protobuf 编码。
3/ protobuf 编码确实适用于 IWA 文件的某些方面。例如,已识别的文本块具有正确的标签。然而,IWA 的其他部分似乎没有遵循规则,要么导致无效的电线类型代码(例如,wire-type=6),要么字段编号为零或被重复使用。
如果:
A/ 有人可以确认 KeyNote 编码确实符合 Google protobuf 编码,或者指出我可以使用的有效编码时间表或方案。
B/ 除了应用于整个 .key 文件的压缩之外,有人可以澄清 IAW 对象是否单独压缩。文档不清楚,但我尝试进一步解压缩 IWA 对象没有成功。
C/ 有人可以指导我使用可以从 KeyNote 文件中提取数据的功能 Python 库。 尽管我在字节和位级别上玩文件解构很有趣,但我仍然有一个目标要实现:-)
谢谢你。
生锈的
感激地接受任何见解