2个版本

0.1.1 2024年7月2日
0.1.0 2024年6月28日

#752 in 解析实现

Download history 153/week @ 2024-06-24 173/week @ 2024-07-01 1/week @ 2024-07-08

每月177次下载

MIT 许可证

16KB
292

BDB 解析器

概述

BDB 解析器是一个基于Rust的库和二进制crate,旨在解析包含全球赛道数据库的.BDB文件。该库提供了读取.BDB文件的二进制格式并将其存储到内部定义的数据模型中的功能。内部数据模型实现了serde序列化和反序列化。二进制crate提供了解析.BDB文件并将输出显示为JSON字符串的命令行工具。

此解析器被编写为一个完整的黑盒逆向工程练习。它没有得到原始文件格式作者的认可。该文件在VBOX Motorsports网站上找到,似乎用于存储其硬件产品的一些赛道数据。我发现在此页面上提供的TRACKS.ZIP文件中压缩了该文件:https://www.vboxmotorsport.co.uk/index.php/us/customer-ct-track-database。具体来说,我使用了“VBOX Touch”下载。

大部分逆向工程工作都是使用优秀的ImHex Tool完成的。在这个过程中,我创建了一个现在可在仓库中找到的模式文件reverse_engineering/TrackDataBase.pat。此模式文件非常不完整,不如这个Rust代码库中进行的解析工作完整。然而,它可能作为一个工作文档有一定的参考价值,展示了我在将格式实现为Rust时的状态。

功能

  • 解析包含赛道数据的.BDB文件。
  • 默认情况下,二进制工具将数据以JSON格式输出到stdout。

文件结构

此文件格式是手动逆向工程的,文件中存在一些无法正确解析的未知字段。有关文件结构的详细信息,请参阅BDB 文件格式文档

入门

先决条件

  • Rust (版本 2021)
  • Cargo

安装

  1. 克隆仓库

    git clone https://github.com/jscatena88/bdb_parser.git
    cd bdb_parser
    
  2. 构建项目

    cargo build 
    

二进制文件使用

要运行解析器,请使用以下命令

cargo run  <path_to_bdb_file>

示例

cargo run -- TRACKS.BDB

二进制输出

输出将是一个 JSON 表示的 .BDB 文件内容,打印到控制台。

项目结构

  • src/bin/main.rs:应用程序的入口点。处理参数解析和文件读取。
  • src/lib.rs:库的入口点。导出主要解析函数和数据结构。
  • src/models.rs:包含表示解析数据的数据结构。
  • src/parsers.rs:包含解析 .BDB 文件不同部分的函数。

贡献

欢迎贡献!请克隆仓库并提交拉取请求,或者如果您对文件格式中的未知字段有任何见解,请提交一个问题。

许可协议

本项目采用 MIT 许可协议。有关详细信息,请参阅 LICENSE 文件。

依赖项

~1.5–2.5MB
~52K SLoC