我一直在使用Revit并试图了解其文件格式的内部数据结构。我对这类工作和逆向工程的流程并不是特别有经验。我想我会在这里发帖,看看是否有人有任何想法。我的目标是能够从 Revit 文件中提取用户数据。Revit 是建筑绘图程序,但我知道 Revit 维护某种事件日志和历史记录,但我一直无法从文件中提取它。
这是我目前所知道的。Revit 文件以扩展名.rvt
. 该文件实际上是CFBF 文件。我编写了一些代码来解析 CFBF 文件并转储内容。它产生这样的目录结构:
├── BasicFileInfo
├── Contents
├── Formats
│ └── Latest
├── Global
│ ├── ContentDocuments
│ ├── DocumentIncrementTable
│ ├── ElemTable
│ ├── History
│ ├── Latest
│ └── PartitionTable
├── Partitions
│ └── 6
├── ProjectInformation
├── RevitPreview4.0
└── TransmissionData
看了这个之后,似乎Global/History
我对这个文件感兴趣。如果你看看这些文件之一,标题看起来像这样
00000000: 0100 0000 0000 0000 1f8b 0800 0000 0000 ................
00000010: 000b 84da 0934 948f ffe8 714b 4564 8994 .....4....qKEd..
00000020: c8ae fa48 ca9e b5c6 8c99 319b 91a5 2459 ...H......1...$Y
00000030: 4aa2 4264 4b84 ecfb beaf 59cb be6f d9be J.BdK.....Y..o..
00000040: 9694 1422 b264 294b 4a28 ca16 eef3 fdfd ...".d)KJ(......
00000050: bbe7 feae 73cf b9ce 799d 63de e7f3 7c9e ....s...y.c...|.
00000060: 19cf 381c 9e6b 7b68 69fe cf07 85ee 7f3e ..8..k{hi......>
00000070: dfef 2f12 e075 b385 f854 492c a399 d451 ../..u...TI,...Q
00000080: fdff 7bfc 5f2b fe9f c727 20f5 0372 a249 ..{._+...' ..r.I
00000090: c434 6209 f113 b182 f885 d840 d023 e766 .4b........@.#.f
数据看起来有点像乱码,但是 8 个字节,我可以看到1f 8b
哪个是 gzipped 内容的幻数。所以此时我剥离了前 8 个字节并解压缩了文件。这就是我被困的地方。文件已成功解压缩,但我无法理解正在吐出的二进制数据。
所有文件都有相似的模式。我将粘贴粘贴到我拥有的示例文件中。
- https://dumpz.org/bByDwdYTztbn
- https://dumpz.org/cW8f7wPHDXya
- https://dumpz.org/bR6Q2BQKgnCz
- https://dumpz.org/aWkNMAs8ZEa3
这些文件中的每一个都有一些非常明显的重复结构。这让我觉得这不仅仅是胡言乱语,而且我不确定它是什么类型的文件格式。我看到的东西:
- 每个文件都以一个幻数开头
5d 04 01
。它可能是一个版本指示器或其他东西 - 每个文件都有一个唯一的 16 字节序列,重复 3 次,然后有 16 字节的空值,然后该序列第四次重复
- 每种情况下文件的前 102 个字节都具有相同的头结构
- 前 860 个字节左右有交替的空“字”
- 然后有一大块原始数据
- 在每个文件的末尾再次有一些重复的数据
我已经尝试了一些不同的工具来了解发生了什么事情xortool
和binwalk
. 我一直无法真正理解这个文件是什么以及标题和预告片部分可能意味着什么。
我想我会在这里分享,看看是否有人有任何想法或想法可以尝试。看下面的数据,我也可以看到开头有一段数据,有一个似乎在计数的数字。它在 Veles 视图中非常明显。