arclabs561/printb

GitHub: arclabs561/printb

printb 将二进制文件按字节映射为彩色 PNG 图像,帮助用户在不了解文件格式的前提下快速识别填充、字符串、压缩区等结构特征并对比版本差异。

Stars: 0 | Forks: 0

# printb 将二进制文件渲染为彩色图像。 二进制文件具有形状特征。填充、字符串、表格、压缩区域以及补丁都会留下不同的字节纹理。`printb` 可以在不知道文件格式的情况下,快速呈现这种形状特征的概貌。 ![包含填充、文本、控制字节、高位字节数据和 0xff 区域的合成二进制文件的彩色渲染](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/523226ff3a021057.png) 黑色代表空填充,绿色代表控制字节,蓝色代表可打印 ASCII 字符,红色代表高位字节数据,白色代表 `0xff`。 ## 安装 ``` cargo install --git https://github.com/arclabs561/printb ``` 或者通过检出的代码进行构建: ``` cargo build --release ``` ## 用法 ``` printb input.bin -n 4096 -w 64 -o image.png ``` `-s` 标志用于在渲染前跳过字节,`-n` 限制读取的字节数,`-w` 设置字节网格的宽度,`-o` 设置输出路径。 ## 比较二进制版本 当确切的字节内容至关重要,而十六进制转储过于狭长难以扫描时,二进制图像就非常有用。微小的字节级更改可能会变成可见的色块、条带或重复的图案。 | 修改前 | 修改后 | | --- | --- | | ![打补丁前的合成二进制文件](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/523226ff3a021057.png) | ![打补丁后添加了重复 ASCII 标记的同一合成二进制文件](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/8c2358e3b8021103.png) | 第二张图将一个 ASCII 标记打补丁到了原本是高位字节数据的区域中。这一变化显示为一个蓝色块。同样的方法也可以帮助检查打包区域、附加的 payload、剥离的符号,或者构建版本之间的意外变化。 要重新生成示例文件和图像: ``` perl examples/make-fixtures.pl cargo run -- target/example-before.bin -n 4096 -w 64 -o examples/image.png cargo run -- target/example-after.bin -n 4096 -w 64 -o examples/patched.png ``` ## 相关工作 - [Conti 和 Dean,二进制与数据文件的可视化逆向工程](https://vizsec.org/files/2008/Conti.pdf):将字节图、熵、字节频率、字符串和 n-grams 作为未知数据的独立于文件的视图。 - [Christopher Domas,逆向工程的未来:动态二进制可视化](https://www.youtube.com/watch?v=4bM3Gut1hIk):著名的演讲,将视觉模式识别与逆向工程实践联系起来。 - [CantorDust](https://inside.battelle.org/blog-details/battelle-publishes-open-source-binary-visualization-tool):一个用于有向图和 Hilbert 风格二进制可视化的 Ghidra 插件。 - [Aldo Cortesi 的 binvis 工作](https://corte.si/posts/visualisation/binvis/) 和 [binvis.io](https://binvis.io/):在将字节映射到正方形上时能保留局部结构的 Hilbert 曲线布局。 - [Stairwell 的 Hilbert 曲线恶意软件分析文章](https://stairwell.com/blog/hilbert-curves-visualizing-binary-files-with-color-and-patterns/) 和 [8dcc/bin-graph](https://github.com/8dcc/bin-graph):用于文件分析的二进制图像的近期实践者示例。 `printb` 比这些工具都要轻量。它从磁盘上的字节生成固定宽度的 PNG 图像,并将交互式导航、有向图绘制和 Hilbert 曲线布局留给更重量级的分析工具。 ## 许可证 采用 MIT 或 UNLICENSE 双重许可。
标签:Mutation, Rust, 二进制分析, 云安全运维, 云资产清单, 可视化, 可视化界面, 网络流量审计, 逆向工程, 通知系统