kaitai-io/kaitai_struct_visualizer
GitHub: kaitai-io/kaitai_struct_visualizer
基于 Kaitai Struct 的控制台二进制结构可视化与十六进制查看工具,支持交互浏览和多种格式导出。
Stars: 331 | Forks: 26
# Kaitai Struct: 可视化工具
这是 [Kaitai Struct](https://kaitai.io/) 项目的一个控制台可视化工具。

Kaitai Struct 是一种声明式语言,用于描述各种二进制数据结构,这些结构存在于文件或内存中:即二进制文件格式、网络流数据包格式等。
核心思想是使用 Kaitai Struct 语言(`.ksy` 文件)描述特定格式,然后使用 `ksc` 将其编译为受支持的编程语言之一的源文件。这些模块将包含生成的解析器代码,该解析器可以从文件/流中读取描述的数据结构,并使用良好且易于理解的 API 提供访问权限。
有关 `.ksy` 文件和一般使用模式的详细信息,请参阅 [Kaitai Struct 主页](https://kaitai.io/)。
## 下载和安装
### 系统要求
- [ksc](https://kaitai.io/#download) — `kaitai-struct-compiler`
- [Java](https://whichjdk.com/)(推荐最新的 LTS 版本 21,至少需要 Java 8),可选择 [JDK 或 JRE](https://whichjdk.com/#what-is-the-difference-between-jdk-and-jre)
- [Ruby](https://www.ruby-lang.org/)(推荐最新的 Ruby 3.x,至少需要 Ruby 2.4)
### 从 RubyGems 仓库安装
Kaitai Struct visualizer 是用 [Ruby](https://www.ruby-lang.org/) 编写的,并且[在 RubyGems 上可用](https://rubygems.org/gems/kaitai-struct-visualizer)。因此,你需要在你的机器上安装 Ruby,然后只需运行:
```
gem install kaitai-struct-visualizer
```
你可以使用 `ksv --version` 来检查已安装的 `ksv` 及其依赖项的版本,例如:
```
$ ksv --version
kaitai-struct-visualizer 0.11
kaitai-struct-compiler 0.11
kaitai-struct 0.11 (Kaitai Struct runtime library for Ruby)
```
`kaitai-struct-compiler` 和 `kaitai-struct` 的版本应该匹配。如果不匹配,请参阅 https://kaitai.io/#download 了解如何安装最新版本的 `kaitai-struct-compiler` 的说明,和/或在需要时使用 `gem update kaitai-struct` 来更新 [kaitai-struct](https://rubygems.org/gems/kaitai-struct) gem。
### 源代码
如果你有兴趣开发可视化工具本身,可以从 [kaitai_struct_visualizer](https://github.com/kaitai-io/kaitai_struct_visualizer) GitHub 仓库检出源代码:
```
git clone https://github.com/kaitai-io/kaitai_struct_visualizer.git
```
然后运行 `bundle install` 来安装依赖项。之后,你可以立即运行 [`bin/ksv`](bin/ksv) 或 [`bin/ksdump`](bin/ksdump)(无需先安装 `kaitai-struct-visualizer` gem),这使开发更加容易。
## 用法
此软件包提供了两个可执行文件:
* `ksv` — 带有 GUI 的交互式控制台可视化工具
* `ksdump` — 用于将解析后的数据以 JSON、XML 或 YAML 格式转储到标准输出 (_stdout_) 的命令行工具
这两个程序的基本用法是相似的:
```
ksv |
```
对于 `ksdump`,使用 `-f` 选项更改输出格式(默认为 `yaml`)并将输出重定向到文件可能很有用,这样你的终端就不会被成千上万行(对于较大的输入文件)淹没:
```
ksdump -f json > output.json
```
### 使用 Docker 运行
该项目也可以通过 Docker Hub 上的 [kaitai/ksv](https://hub.docker.com/r/kaitai/ksv) 镜像使用。默认入口点是 `ksv`(交互式可视化工具):
```
docker run --rm -it -v "$(pwd):/share" kaitai/ksv
```
你可以像这样指定 `ksdump` 作为入口点(请注意,我们不再需要 `-it` 标志,因为 `ksdump` 不是交互式的——实际上省略它们可以让你区分 `ksdump` 到 _stdout_ 和 _stderr_ 的输出,请参阅 [此评论](https://github.com/kaitai-io/kaitai_struct_visualizer/issues/56#issuecomment-1666629764)):
```
docker run --rm -v "$(pwd):/share" --entrypoint ksdump kaitai/ksv -f json > output.json
```
在本地构建 Docker 镜像:
```
docker build . --tag docker.io/kaitai/ksv
```
## 许可证
Kaitai Struct visualizer 版权所有 (C) 2015-2025 Kaitai Project。
本程序是自由软件:你可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它,许可证版本为 3,或者(根据你的选择)任何更高的版本。
分发本程序是希望它会有用,但没有任何保证;甚至没有适销性或特定用途适用性的默示保证。有关更多详细信息,请参阅 GNU 通用公共许可证。
你应该已经收到一份 GNU 通用公共许可证的副本以及本程序。如果没有,请参阅 。
请注意,它仅适用于可视化工具本身,而不适用于在正常编译过程中提供的 `.ksy` 输入文件,也不适用于编译器的输出文件——这构成了正常的使用过程,并且显然你保留对两者的版权。
标签:JARM, JS文件枚举, Kaitai Struct, kaitai-struct-visualizer, ksy, Ruby, 二进制分析, 二进制发布, 二进制文件, 云安全运维, 云资产清单, 内存分析, 可视化工具, 开源工具, 控制台应用, 数据结构描述, 文件格式解析, 知识库, 结构化数据, 编译器, 网络协议分析, 网络安全审计, 解析器生成, 请求拦截, 逆向工程