该项目是一个 Docker 镜像,适用于解决 CTF 平台(如 hackthebox.eu)上的隐写挑战。该镜像预装了许多流行工具(见下方工具列表),以及一些可用于检查简单事物的筛选脚本(例如,运行 check_jpg.sh image.jpg 可获取 JPG 文件的报告)。
首先确保您已安装 Docker(安装指南)。然后您可以使用此仓库中的 shell 脚本 bin/build.sh 和 bin/run.sh 来构建镜像并运行容器。您将进入容器内的 bash shell。容器将挂载 data 文件夹,您可以将待分析的文件放入其中。
如果您不使用脚本,请按以下步骤操作:
docker build -t <镜像名称> .)或从 Docker Hub 拉取(docker pull dominicbreuker/stego-toolkit)/data 文件夹启动容器(docker run -it <镜像名称> -v /本地/包含/data的文件夹:/data /bin/bash)check_jpg.sh image.jpg 生成快速报告,或运行 brute_jpg.sh image.jpg wordlist.txt 尝试使用各种工具和密码提取隐藏数据start_ssh.sh 并通过 X11 转发连接到容器start_vnc.sh 并通过浏览器连接到容器的桌面更多信息请参考以下部分:
运行 docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash。您将进入容器的工作目录 /data 的 shell。您的主机文件夹 $(pwd)/data 将被挂载,其中的图像将可访问。

安装了多种 Linux 和 Windows 工具。Windows 工具通过 Wine 支持。部分工具可通过命令行使用,另一些需要 GUI 支持。
这些工具可通过命令行使用。您只需启动容器并挂载要检查的隐写文件即可。
初始阶段使用的工具。帮助您初步了解所处理文件的概况。
| 工具 | 描述 | 使用方法 |
|---|---|---|
| file | 检查文件类型 | file stego.jpg |
| exiftool | 检查媒体文件的元数据 | exiftool stego.jpg |
| binwalk | 检查是否有其他文件嵌入或附加 | binwalk stego.jpg |
| strings | 检查文件中是否有可读的有趣字符 | strings stego.jpg |
| foremost | 提取嵌入/附加的文件 | foremost stego.jpg |
| pngcheck | 获取 PNG 文件详细信息(或发现其实际上是否为其他格式) | pngcheck stego.png |
| identify | GraphicMagick 工具,检查文件类型及图像是否损坏 | identify -verbose stego.jpg |
| ffmpeg | ffmpeg 可用于检查音频文件的完整性,并报告信息和错误 | ffmpeg -v info -i stego.mp3 -f null - 重新编码文件并丢弃结果 |
设计用于检测文件中隐写内容的工具。主要执行统计测试。仅能在简单情况下揭示隐藏信息。但如果发现有趣的异常,可能提示要寻找什么。
| 工具 | 文件类型 | 描述 | 使用方法 |
|---|---|---|---|
| stegoVeritas | 图像(JPG, PNG, GIF, TIFF, BMP) | 多种简单和高级检查。查看 stegoveritas.py -h。检查元数据,创建许多变换后的图像并保存到目录,暴力破解 LSB 等。 | stegoveritas.py stego.jpg 运行所有检查 |
| zsteg | 图像(PNG, BMP) | 检测各种 LSB 隐写,以及 openstego 和 Camouflage 工具 | zsteg -a stego.jpg 运行所有检查 |
| stegdetect | 图像(JPG) | 执行统计测试以判断是否使用了隐写工具(jsteg, outguess, jphide 等)。详细信息查看 man stegdetect。 | stegdetect stego.jpg |
| stegbreak | 图像(JPG) | 针对 JPG 图像的暴力破解工具。声称能破解 outguess、jphide 和 jsteg。 | stegbreak -t o -f wordlist.txt stego.jpg,使用 -t o 针对 outguess,-t p 针对 jphide,-t j 针对 jsteg |
可用于隐藏消息并在之后恢复的工具。有些工具会在隐藏前对消息进行加密。如果需要密码,可尝试这些工具。此 Docker 镜像中提供了支持这些工具的暴力破解脚本。
| 工具 | 文件类型 | 描述 | 隐藏方法 | 恢复方法 |
|---|---|---|---|---|
| AudioStego | 音频(MP3 / WAV) | 工作原理详见此博客文章 | hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 | hideme stego.mp3 -f && cat output.txt |
| jphide/jpseek | 图像(JPG) | 来自此处的较老工具。这里安装了来自此处的版本,因为原始版本经常崩溃。它会交互式地提示输入口令! | jphide cover.jpg stego.jpg secret.txt | jpseek stego.jpg output.txt |
| jsteg | 图像(JPG) | LSB 隐写工具。不加密消息。 | jsteg hide cover.jpg secret.txt stego.jpg | jsteg reveal cover.jpg output.txt |
| mp3stego | 音频(MP3) | 旧程序。加密并隐藏消息(3DES 加密!)。运行于 Wine 的 Windows 工具。需要 WAV 输入(某些 WAV 文件可能报错,对我有效的方法如:ffmpeg -i audio.mp3 -flags bitexact audio.wav)。重要:务必使用绝对路径! | mp3stego-encode -E secret.txt -P password /path/to/cover.wav /path/to/stego.mp3 | mp3stego-decode -X -P password /path/to/stego.mp3 /path/to/out.pcm /path/to/out.txt |
| openstego | 图像(PNG) | 多种 LSB 隐写算法(参考此博客)。仍在维护。 | openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png | openstego extract -sf openstego.png -p abcd -xf output.txt (省略 -xf 可使用原始名称创建文件!) |
| outguess | 图像(JPG) | 使用“冗余位”隐藏数据。有两个版本:旧的 outguess-0.13 取自此处,新的 outguess 来自包仓库。恢复时必须使用与隐藏时相同的版本。 | outguess -k password -d secret.txt cover.jpg stego.jpg | outguess -r -k password stego.jpg output.txt |
| spectrology | 音频(WAV) | 将图像编码为音频文件的频谱图。 | TODO | 使用 GUI 工具 sonic-visualiser |
| stegano | 图像(PNG) | 使用多种(基于 LSB 的)方法隐藏数据。还提供一些筛选工具。 | stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.png 或 stegano-red hide --input cover.png -m "secret msg" --output stego.png 或 stegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.png(使用不同的生成器,stegano-lsb-set list-generators) | stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt 或 stegano-red reveal -i stego.png 或 stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt |
| Steghide | 图像(JPG, BMP)和音频(WAV, AU) | 功能丰富且成熟的数据加密和隐藏工具。 | steghide embed -f -ef secret.txt -cf cover.jpg -p password -sf stego.jpg | steghide extract -sf stego.jpg -p password -xf output.txt |
| cloackedpixel | 图像(PNG) | LSB 图像隐写工具 | cloackedpixel hide cover.jpg secret.txt password 创建 cover.jpg-stego.png | cloackedpixel extract cover.jpg-stego.png output.txt password |
| LSBSteg | 未压缩格式的图像(PNG, BMP, ...) | 简单的 LSB 工具,带有非常清晰可读的 Python 代码 | LSBSteg encode -i cover.png -o stego.png -f secret.txt | LSBSteg decode -i stego.png -o output.txt |
| f5 | 图像(JPG) | F5 隐写算法,包含过程的详细信息 | f5 -t e -i cover.jpg -o stego.jpg -d 'secret message' | f5 -t x -i stego.jpg 1> output.txt |
| stegpy | 图像(PNG, GIF, BMP, WebP)和音频(WAV) | 基于 LSB 方法的简单隐写程序 | stegpy secret.jpg cover.png | stegpy _cover.png |
以下所有工具都有图形用户界面,不能通过命令行使用。要运行它们,您必须在容器内提供 X11 服务器。有两种支持的方式:
start_ssh.sh 启动 SSH 服务器。之后通过 X11 转发连接。需要主机上有 X11 服务器!start_vnc.sh 启动 VNC 服务器 + 客户端。之后通过浏览器连接到端口 6901,即可获得 Xfce 桌面。不需要主机依赖项!或者,寻找其他方式在容器内提供 X11。有许多不同的方法(例如,挂载 UNIX 套接字)。