# 隐写术工具对比：steghide、OpenStego、OutGuess、OpenPuff 和在线工具

隐写术工具能把文件或信息藏进一张看起来普通的图片、音频片段或视频里。知名的几个都很老、免费，而且为不同的用途而做：steghide 用命令行处理 JPEG 和 WAV，OpenStego 处理 PNG 图片和水印，OutGuess 用于 JPEG 研究，OpenPuff 在 Windows 上做多文件隐藏，此外还有一长串在线编码器。本指南按“它们藏在什么里、最后更新是什么时候、什么能攻破它、各适合谁”来比较它们，并说明 HideFile 处于什么位置、不处于什么位置。

在 Bing 上搜“steganography tool”，答案是一排总是那几个名字的轮播，后面跟着一段推荐基于浏览器的 LSB 编码器的 AI 摘要。两者都没有告诉你的是：最著名的那个工具自 2003 年以来就没有发布过新版本，而破解工具可以在两秒内对它尝试一千四百万个密码。

<figure><img src="/docs/guides/img/stego/bing-steganography-tool.jpg" alt="Bing 对“steganography tool”的结果：OpenPuff、OutGuess、HiddenWave、StegHide、OpenStego 和 HStego 的轮播，然后是一段 AI 概览，列出 StegoToolkit、SteganoCrypt 和 StegOnline 等在线 LSB 工具。" loading="lazy" width="100%"><figcaption>“steganography tool”，Bing，2026 年 10 月 14 日。轮播里列出了工具名称；其中没有任何东西说明它们有多老、什么能攻破它们。</figcaption></figure>

## 隐写术工具一览

| 工具 | 藏在什么里 | 最后一次发布 | 界面 | 什么能攻破它 | 适合谁 |
| --- | --- | --- | --- | --- | --- |
| steghide | JPEG、BMP、WAV、AU | 0.5.1，2003 年 10 月 | 命令行 | stegseek 能破解弱密码短语，并能在没有密码的情况下检测出它的数据 | CTF 题目、课程作业 |
| OutGuess | JPEG 系数 | 0.4，2021 年 9 月（复活项目） | 命令行 | 2002 年发表的块状度攻击 | 学习 JPEG 隐写术的原理 |
| OpenPuff | 一连串图片、音频、视频、PDF | 4.01，2018 年 | Windows 图形界面 | 复杂性；大文件需要很多载体 | 想要一层诱饵的爱好者 |
| OpenStego | 图片，保存为 PNG | 0.8.6，2023 年 1 月 | Java 图形界面和命令行 | zsteg 能识别它的 LSB 数据；密码哈希较弱 | 给自己的图片加水印 |
| 在线 LSB 工具 | 通常是 PNG 像素 | 不一 | 网页 | 简单的 LSB 很容易被检测；有些会上传你的图片 | 谜题和演示 |
| HideFile | PNG、JPEG、MP4、PDF 中的加密记录 | 当前版本 | 浏览器 | 专门的工具能看出被加了数据 | 共用设备上的私密文件 |

<figure><img src="/docs/guides/img/stego/tool-grid.svg" alt="六种工具的对比卡片：steghide、OutGuess、OpenPuff、OpenStego、在线 LSB 工具和 HideFile，每张列出它藏在什么里、最后一次发布、弱点以及适合谁。" loading="lazy" width="100%"><figcaption>这里的每个工具都有已知的弱点。按用途选，然后围绕弱点做规划。</figcaption></figure>

## steghide 是经典，而它的密码短语就是全部的防线

[steghide](https://steghide.sourceforge.net/) 是大多数 CTF 题解和 YouTube 教程默认使用的工具，也是有经验的 Reddit 评论者会推荐的：“don't reinvent stego, just use this”（别重新发明隐写术，用这个就行），有人这样说。它能把任何文件藏进 JPEG、BMP、WAV 或 AU 载体里。它的项目页面仍写着“The current version is 0.5.1”（当前版本是 0.5.1），发布于 2003 年 10 月 15 日。Linux 发行版仍在打包它，所以安装很容易，但代码本身已经二十多年没有上游发布了。

它的设计比它的年纪所显示的要好。steghide 会压缩并加密载荷（默认使用 Rijndael，即 AES 密码），用密码短语在图像或音频数据中挑选伪随机的位置，并且是交换数值对而不是覆盖它们，所以整体的颜色或采样计数保持不变。项目把这描述为能抵抗“first-order statistical tests”（一阶统计检验）。对你自己的文件做基本使用，就像这样：

```
steghide embed -cf photo.jpg -ef note.txt
steghide extract -sf photo.jpg
```

弱点是密码短语。[stegseek](https://github.com/RickdeJager/stegseek) 是专门破解 steghide 的工具，它的 README 说它能“run through the entirety of rockyou.txt in under 2 seconds”（在两秒内跑完整个 rockyou.txt），rockyou 是一份泄露的、约一千四百万个真实密码的列表。它还能在没有任何密码的情况下提取 steghide 的元数据，这就告诉分析者这个文件含有 steghide 数据。所以一个字典里的词毫无保护作用。如果你使用 steghide，请用长的随机密码短语，并假定数据的存在可以被确认。

## OutGuess 开创了考虑统计特征的 JPEG 隐藏，并在 2002 年被攻破

[OutGuess](https://github.com/resurrecting-open-source-projects/outguess) 由 Niels Provos 在 1999 年编写，直接作用于 JPEG 的压缩系数。嵌入之后，它会调整其他系数，使图像整体的系数直方图与原图一致，这是为了对付那种抓住早期 JPEG 工具的卡方攻击而设计的。2002 年，Fridrich、Goljan 和 Hogea 发表了一种基于 JPEG 块边缘“块状度”的攻击，检测出了 OutGuess，还能估算隐藏信息的长度。

原来的项目沉寂了很多年。一个复活小组 Resurrecting Open Source Projects 在 2021 年 9 月发布了 0.4 版，这也是当前 Linux 软件包所带的版本。按 Wikipedia 的说法，它的载荷很脆弱，挺不过 JPEG 重新编码。最好把 OutGuess 当作一个文档齐全的教学示例，看 JPEG 隐写术和隐写分析是怎样互相超越的。

## OpenPuff 能跨多个载体隐藏，还带诱饵选项

[OpenPuff](https://embeddedsw.net/OpenPuff_Steganography_Home.html) 是 Cosimo Oliboni 做的、适用于 Windows 的便携程序（网站也提供 Linux 版本），它的最后一个版本 4.01 来自 2018 年。它是这份清单里最有野心的工具。它把一个载荷分散到一连串载体里：图片（BMP、JPG、PCX、PNG、TGA）、音频（AIFF、MP3、WAV 等）、视频（3GP、MP4、MPG、VOB）以及 Flash 或 PDF 文件，最大 256 MB，前提是“if you have enough carriers at disposal”（你手头有足够多的载体）。它叠加了多种密码，并支持可否认隐写术：“Top secret data can be protected using less secret data as a decoy.”（绝密数据可以用不那么机密的数据做诱饵来保护。）

代价是复杂。你要管理密码、载体顺序和每个载体的设置，丢了一个载体，整条链就断了。关于它的许可证，各方说法不一（Wikipedia 称它是闭源免费软件，帮助文件里提到 LGPL），所以如果你需要别人来审计，请在依赖它之前先核实。

## OpenStego 是最友好的桌面选项，最适合做水印

[OpenStego](https://www.openstego.com/) 是一个免费的、GPL-2.0 的 Java 应用，在 Windows、macOS 和 Linux 上都有图形界面。它在 GitHub 上最新的发布是 2023 年 1 月的 0.8.6。它做两件事：用随机化的 LSB 方法把数据藏进图片，以及给图片加隐形签名的水印，这样你以后就能证明某个副本来自你。

用于隐藏时，输出保存为 PNG，这是无损格式，所以载荷能一直存活，直到有人把图片转成 JPEG。它的检测研究得很透彻：[zsteg](https://github.com/zed-0xff/zsteg) 是常用的 PNG 和 BMP 分析工具，它把 OpenStego 列在能识别的格式之中。OpenStego 提供基于密码的 AES 加密，但它的源代码派生密钥时用的是固定盐值，且只有很少的迭代次数，这让弱密码很容易被猜出。用它给你自己发布的图片加水印，或者用于“被发现也无所谓”的 LSB 隐藏。

## 在线隐写术工具适合谜题，不适合私密文件

上面 Bing 的摘要指向了基于浏览器的工具，如 StegoToolkit、SteganoCrypt 和 StegOnline，而“steganography tools”排在最前面的自然结果是一个在线编码器。大多数做的是对 PNG 的简单 LSB 嵌入，这恰恰是统计检测器专门调好要对付的。更大的问题是你的图片去了哪里。有些页面在你的浏览器里处理图片；另一些则把它上传到服务器去编码。页面很少讲清楚是哪一种，所以在往里面放任何私密的东西之前，请先打开浏览器的网络工具，或阅读网站的文档。

## 检测工具是这片图景的另一半

构建隐藏工具的那些社区，也在构建查找工具。stegseek 针对 steghide。zsteg 检查 PNG 和 BMP 文件里的 LSB 数据和已知工具的特征。Stegdetect，也就是 2001 年 eBay 研究中用的 JPEG 检测器，已不再开发。在 r/computerforensics 上，有位用户想找一个现代的替代品，反映说，包括 StegExpose 在内的一组检测器，在一张他用 steghide 做的图片里什么也没发现：“None of these tool found anything.”（这些工具一个都没发现。）干净的结果几乎证明不了什么，被标记也证明不了多少，[隐藏的照片能被发现吗](/zh/guides/can-hidden-photos-be-detected)用数字说明了这一点。

## HideFile 是“隐蔽加加密”，不是经典隐写术

[HideFile](https://hidefile.app) 是一个网站，在任何现代浏览器里使用，把私密照片、视频、PDF 和文档放进一个普通的封面文件：你选的一张照片、视频或 PDF。封面在任何地方都是一个正常文件地打开。在 hidefile.app 输入密码打开，它就把里面的文件显示成一个私密图库。

它严格说来不是隐写术，也不假装是。HideFile 不改动任何一个像素，也不试图让自己在统计上看起来正常。它在浏览器里加密你的文件（XChaCha20-Poly1305，密钥由你的密码通过 Argon2id 保护），并把它们存成文件格式允许存放额外数据的记录，所以文件保持有效。专门的工具能看出被加了数据；没有密码读不出内容。文件不会上传到 HideFile 的服务器。

它提供而经典工具不提供的是实用性：整个文件夹、大视频和 PDF、一个可浏览的图库、不需要安装任何东西，以及一个你可以像其他任何文件一样复制到新手机或备份的封面。它不提供的是对分析者的隐形。[隐写术是什么？把数据藏进图片的原理](/zh/guides/how-steganography-works)讲了各种方法之间的区别。

<figure><img src="/docs/guides/img/stego/which-tool.svg" alt="选择指南：做 CTF 或上课，用 steghide 或 OutGuess；给你发布的图片加水印，用 OpenStego；让私密文件避开使用你设备的人，用 HideFile 封面文件；对训练有素的分析者隐藏一条信息，这里没有任何工具是安全的，少带数据。" loading="lazy" width="100%"><figcaption>公开发布的工具，恰恰是分析者会专门测试的对象。对专业人员来说，它们没有一个是隐蔽信道。</figcaption></figure>

## HideFile 能帮上什么

如果你比较隐写术工具，是因为想让手机或笔记本电脑里的私密照片或文件不再显眼，那么经典工具很不合适。steghide 和 OutGuess 只能放小载荷，还需要终端。OpenStego 需要桌面和 PNG。在线编码器可能会上传你的图片。照片保险箱 App，也就是另一个常见的答案，会用它的图标宣告自己，[照片保险箱 App 安全吗](/zh/guides/is-photo-vault-safe)讲了这一点。

HideFile 就是为这种日常情形而做的。选一个封面，添加文件，设置密码，然后把封面保存在你存放其他照片或文档的地方。任何翻过去的人，看到的都是一张普通图片。请把局限看清楚：HideFile 能挡住随手窥探，挡不住取证工具；密码无法找回，所以忘了密码，文件就没了；而会重新编码照片的 App 可能会把隐藏的部分去掉，所以请把封面当作文件来发送和备份。对于训练有素的检查人员、边境检查或法律压力，它不合适，这张表里的其他所有工具也都不合适。对于人们不用任何特殊软件就能用的技巧，见[怎么把文件藏在眼皮底下](/zh/guides/how-to-hide-files-in-plain-sight)。

## 资料来源

- steghide：[project home](https://steghide.sourceforge.net/)（0.5.1 版，2003-10-15；核对于 2026-10-14）
- stegseek：[GitHub repository and README](https://github.com/RickdeJager/stegseek)（v0.6，2021；核对于 2026-10-14）
- OutGuess：[Resurrecting Open Source Projects repository](https://github.com/resurrecting-open-source-projects/outguess)（0.4，2021-09-03；核对于 2026-10-14）
- Wikipedia：[OutGuess](https://en.wikipedia.org/wiki/OutGuess)（核对于 2026-10-14）
- OpenPuff：[project home](https://embeddedsw.net/OpenPuff_Steganography_Home.html) 和 [help file v4.01](https://embeddedsw.net/doc/OpenPuff_Help_EN.pdf)；Wikipedia：[OpenPuff](https://en.wikipedia.org/wiki/OpenPuff)（核对于 2026-10-14）
- OpenStego：[project home](https://www.openstego.com/)、[GitHub releases](https://github.com/syvaidya/openstego/releases)（0.8.6，2023-01-30）和 [key derivation source](https://github.com/syvaidya/openstego/blob/master/src/main/java/com/openstego/desktop/OpenStegoCrypto.java)
- zsteg：[GitHub repository](https://github.com/zed-0xff/zsteg)（核对于 2026-10-14）
- Provos and Honeyman，[Detecting Steganographic Content on the Internet](http://www.citi.umich.edu/techreports/reports/citi-tr-01-11.pdf)，CITI Technical Report 01-11，2001
- Reddit，r/computerforensics：[Is there any tool to identify steganography?](https://www.reddit.com/comments/be92z5/)
- Reddit，r/Steganography：[PNG download keeps the data, WebP does not](https://www.reddit.com/comments/1lho85i/)
