jchv/zanbato
GitHub: jchv/zanbato
这是一个用Go编写的Kaitai Struct编译器和运行时求值器,解决了在Go环境中无需JVM依赖即可解析二进制格式的问题。
Stars: 0 | Forks: 0
[Web编辑器](https://jchv.github.io/zanbato/) • [](https://goreportcard.com/report/github.com/jchv/zanbato) • [](https://github.com/jchv/zanbato/actions/workflows/ci.yml)
# Zanbato
Zanbato 是一个用 Go 编写的、针对 Kaitai Struct `.ksy` 文件的编译器和运行时求值器实现,目前支持 Go 和 C 语言输出。它对 Kaitai Struct 的功能有相当完整的支持。
其目的并非替代上游的 Kaitai Struct 编译器。它是一个替代实现,可能对纯 Go 项目、实验 `.ksy` 定义以及希望在不依赖基于 JVM 的编译器的情况下获得 Kaitai Struct 支持的工具链有所帮助。
## 状态
Zanbato 目前通过了完整的上游 Kaitai Struct 测试套件,以及为专门针对 Zanbato 尝试找出缺陷而创建的额外测试(这些测试也针对上游 Kaitai Struct 进行了验证)。项目仍在积极开发中,因此很可能存在缺陷,尤其是在使用较少的功能上。
所有 Kaitai Struct 功能都应在一定程度上可用,包括:
- ✅ 结构体
+ ✅ 基本数据类型(整数、字符串、比特、字节等)
+ ✅ 类型切换
+ ✅ 字节序
- ✅ 继承字节序
- ✅ 字节序切换
- ✅ 比特字节序
+ ✅ 引用其他类型
+ ✅ 重复:
- ✅ 迭代次数重复
- ✅ 重复直到流结束
- ✅ 重复直到表达式为真
- ✅ 枚举
- ✅ 参数
- ✅ 表达式
+ ✅ 一元、二元和三元运算符
+ ✅ 常见的字符串、字节数组、数组、枚举和流辅助方法
- ✅ 实例
+ ✅ 值实例
+ ✅ 定位实例
+ ✅ 条件实例
- ✅ 序列化
+ 请注意,序列化是一个进行中功能(WIP),且测试较少。
+ Go 和 C 发射器都支持序列化。
+ 运行时求值器仅支持修改标量。
标签:DNS解析, EVTX分析, Go语言, Kaitai Struct, Web编辑器, 二进制解析, 代码生成, 字节序处理, 工具开发, 序列化, 开源项目, 数据定义, 数据格式工具, 数据管道, 日志审计, 格式解析, 测试套件, 渗透测试工具, 程序破解, 类型系统, 结构数据, 编译器开发, 表达式计算, 软件工程, 运行时评估