跳到主要内容

隐写提取与编码链还原

隐写的核心是载体看起来正常,信息藏在细节里:图片的 alpha 通道、附加数据,或一层套一层的压缩与编码。实战里更多是流程题——按工具覆盖面逐个排除,把剥出的中间产物继续往下剥,直到还原出明文凭据或线索。

仅限授权环境

隐写分析仅用于授权评估或题目环境,处理素材前确认来源合法。


steghide 提取

支持 jpg/png/bmp/wav 载体:

steghide extract -sf img.jpg -p '<密码>'
  • 空密码用 -p '',配合 -f 覆盖已有输出。
  • 密码线索常在页面文案、源码注释、前后谜题的文本里,先收集线索再试,不要盲目穷举。
  • 多层嵌套常见:jpg 里剥出 zip,zip 里又是一张 jpg,最后才是 txt,逐层剥即可。

盲水印

双图对比场景(原图 + 载密图)用 BlindWaterMark:

python3 bwmforpy3.py decode 原图.png 载图.png wm.png

前端与 CSS 载体

style.css 内嵌 data URI 图片时,用 grep 抠出 base64 再落盘:

grep -oP "data:image/png;base64,\K[^')"]+" style.css | base64 -d > out.png

提取出的 PNG 还要检查 alpha 通道隐写(stegsolve):把透明度通道单独渲染,提示文字可能只在那里可见。


二维码与辅助判断

zbarimg qr.png

二维码识别失败时转隐写方向——图片可能不是完整二维码,或缺定位角,信息另有藏处。

辅助判断工具:

工具用途
binwalk查附加数据、嵌入文件
strings过滤可读字符串
exiftool看元数据与注释字段

编码链还原

剥出的字符串往往还要再解一层编码:

# base58:字符集不含 0、O、I、l,可据此识别
echo <串> | base58 -d

base64、hex 等多层编码逐层解码还原,每剥一层重新用 file 判断下一层类型。密码类线索也可以先转成候选词,配合 CeWL 主题词表 的思路从页面文案扩展字典。


复核要点

  • 每剥出一层产物先 file 确认类型,再决定下一层用什么工具。
  • 密码试不出来时回到页面文案与注释找线索,而不是硬跑大字典。
  • 图片"看起来没有内容"不等于没有隐写,alpha 通道和附加数据都要看。

防御建议

  1. 敏感信息不放入图片、音频等可被公开获取的载体。
  2. 发布前审计静态资源:data URI、注释、元数据都要过一遍。
  3. 对外发布的图片统一压缩转码,破坏潜在隐写层。
  4. 部署水印检测与资产扫描工具,发现异常嵌入内容。