zsteg
2026/5/29工具工具图片隐写zsteg大约 4 分钟
zsteg
链接
是什么
zsteg 是图片隐写检测工具,常用于 PNG、BMP 等无损图片的 LSB 和通道隐写分析。
它适合快速发现:
- RGB/RGBA 各通道低位隐藏数据
- bit plane 中的文本
- zlib 压缩数据
- 常见隐写编码痕迹
安装与配置
zsteg 是 Ruby gem:
sudo apt install ruby ruby-dev
sudo gem install zsteg验证:
zsteg --help基本用法
扫描图片
zsteg image.png查看所有检测
zsteg -a image.png指定通道和位
zsteg image.png -E b1,rgb,lsb,xy提取结果
zsteg image.png -E b1,r,lsb,xy > out.bin更多选项
指定位深度
# 只检测最低位
zsteg image.png -b 1
# 检测多位
zsteg image.png -b 1,2,3,4指定通道
# 只检测红色通道
zsteg image.png -c r
# 只检测绿色通道
zsteg image.png -c g
# 只检测蓝色通道
zsteg image.png -c b
# 检测所有通道
zsteg image.png -c rgb指定位顺序
# LSB 优先
zsteg image.png -E b1,r,lsb,xy
# MSB 优先
zsteg image.png -E b1,r,msb,xy指定像素顺序
# 行优先
zsteg image.png -E b1,rgb,lsb,xy
# 列优先
zsteg image.png -E b1,rgb,lsb,yx提取特定配置
# 提取 LSB 红色通道
zsteg image.png -E b1,r,lsb,xy > red_lsb.bin
# 提取 MSB 蓝色通道
zsteg image.png -E b1,b,msb,xy > blue_msb.bin
# 提取所有通道 LSB
zsteg image.png -E b1,rgb,lsb,xy > all_lsb.bin输出为 hex
zsteg image.png -E b1,rgb,lsb,xy | xxd | head显示详情
zsteg -v image.png通道和位说明
通道
r: 红色通道 (Red)
g: 绿色通道 (Green)
b: 蓝色通道 (Blue)
a: Alpha 通道 (透明度)
rgb: 所有颜色通道
rgba: 所有通道包括 Alpha位
b1: 第 1 位 (最低位, LSB)
b2: 第 2 位
b3: 第 3 位
b4: 第 4 位
b5: 第 5 位
b6: 第 6 位
b7: 第 7 位
b8: 第 8 位 (最高位, MSB)位序
lsb: 最低位优先
msb: 最高位优先像素顺序
xy: 行优先 (从左到右, 从上到下)
yx: 列优先 (从上到下, 从左到右)CTF常用技巧
先跑默认检测
zsteg image.png如果结果里出现 flag、text、zlib、base64,优先继续跟进。
尝试所有通道
zsteg -a image.png输出很多时,不要全看。优先看可读文本、压缩数据、文件头。
提取后继续判断
zsteg image.png -E b1,rgb,lsb,xy > hidden.bin
file hidden.bin
strings hidden.bin
binwalk hidden.bin隐写提取出的内容可能还是压缩包、图片或二次编码。
LSB 原理
LSB (Least Significant Bit) 隐写:
- 修改像素值的最低位
- 视觉上几乎看不出变化
- 每个像素可以隐藏 1-3 位数据 (RGB)
示例:
原始像素: (10101010, 11001100, 11110000)
修改后: (10101011, 11001101, 11110001)
隐藏了 3 位数据: 101常见隐写模式
LSB 隐写:
- 最常见
- 修改最低位
- zsteg 主要检测这种
位平面隐写:
- 在特定位平面隐藏数据
- 可能跨通道
调色板隐写:
- 修改调色板顺序
- 仅限索引色图片配合其他工具
# 先用 zsteg 扫描
zsteg image.png
# 用 StegSolve 查看位平面
# 手动查看各个 bit plane
# 用 xxd 查看文件结构
xxd image.png | head
# 用 exiftool 查看元数据
exiftool image.png常见问题
JPG 能用 zsteg 吗
通常不适合。JPG 是有损压缩,LSB 分析方式不同。PNG/BMP 更常用 zsteg。
zsteg 没结果就没有隐写吗
不是。可能是自定义顺序、加密、调色板隐写、图片尺寸/像素关系或其他隐写方式。
和 StegSolve 怎么配合
StegSolve 适合人工看通道和 bit plane,zsteg 适合自动扫。两者一起用更稳。
输出太多看不懂
1. 只看包含可读文本的结果
2. 只看包含文件头的结果
3. 只看 zlib 压缩数据
4. 忽略看起来是随机数据的结果提取的数据是乱码
1. 可能是加密的
2. 可能是压缩的
3. 可能是其他编码
4. 尝试 binwalk 检查
5. 尝试 strings 搜索关联
- 图片像素与LSB
- 文件头、文件尾与真实类型
- StegSolve
- exiftool
- xxd与hexdump