跳转至

file2img

file2img 是个小工具,把任意二进制文件塞进 PNG 图片里。原理是把字节分成 RGBA 像素(每像素 4 字节),无损压缩。逆向也一样,完美还原。

用法

CLI 简单:

file2img input.bin output.png
img2file output.png output.bin

用 Pillow 处理,自动算尺寸(尽量方形)。适合藏文件或可视化二进制。

深入洞见

源码表明 file2img 通过 msgspec 序列化 metadata(文件名、长度等)并把原始字节直接线性写入 numpy 数组后用 imageio.v3 写成无损图像;实现按 3 字节/像素(RGB)而不是 RGBA 打包(使用 ceil((length/3)**0.5) 计算正方形尺寸),这点与文档常见的 4 字节假设不同。项目同时提供 CLI(Typer)与 HTTP API(FastAPI),并用 msgspec 压缩元数据以保证可精确恢复原始二进制。

参考源码:src/core.py(encode/decode 算法) · src/metadata.py(msgspec meta) · src/server.py(FastAPI 接口)

为什么 PNG

PNG 支持 RGBA,密度高。比 JPEG 好,透明度啥的。

相关:

我写的时候想着 stego 玩法,但其实日常藏数据也行。