我一直在搞弄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这是某些东西的魔幻数字被压缩。因此,在这一点上,我剥离了前8个字节并解压缩了文件。这就是我卡住的地方。文件已成功解压缩,但我无法理解正在吐出的二进制数据。

所有文件都具有类似的模式。我正在将粘贴发布到我拥有的示例文件中。


https://dumpz.org/bByDwdYTztbn
https://dumpz.org/cW8f7wPHDXya
https://dumpz.org/bR6Q2BQKgnCz
https://dumpz.org/aWkNMAs8ZEa3

每个文件都有一些非常明显的重复结构。它使我认为这不仅是胡言乱语,而且我不确定它是哪种文件格式。我看到的东西:


每个文件都以幻数5d 04 01开头。它可能是版本指示器或其他内容
每个文件都有一个唯一的16字节序列,重复3次,然后有16个字节的null,然后第四次重复该序列。
文件的前102个字节在每种情况下都具有相同的标头结构
前860个字节左右具有交替的空“单词”
然后有一大堆原始数据
每个文件的末尾又有一些重复数据

我尝试了几种不同的工具来了解xortoolbinwalk之类的情况。我还无法真正理解此文件的含义以及标题和结尾部分的含义。

我想在这里分享一下,看看是否有人对尝试的事情有任何想法或想法。查看下面的数据,我还可以看到开头有一部分数据似乎在增加。在Veles视图中,它非常清晰。



如果有帮助,这是一个示例Revit文件的历史记录的屏幕截图。我想它只是存储在“历史记录”文件中,但我无法真正分辨出来。


评论

某些“ Revit”的链接或说明可能会有所帮助

谢谢@IgorSkochinsky,我添加了一些有关Revit和历史细节的上下文。