2个版本
0.1.1 | 2024年7月2日 |
---|---|
0.1.0 | 2024年6月28日 |
#752 in 解析实现
每月177次下载
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
安装
-
克隆仓库
git clone https://github.com/jscatena88/bdb_parser.git cd bdb_parser
-
构建项目
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