本文将介绍一种适用于Windows和Linux的隐写程序:steghide。
隐写是一种将任意文件隐藏在图片或者音频等其他媒介的方式。steghide具有将这些文件隐藏在JPG或者MP3文件中的能力。 这种隐写和简单的在文件中附加什么数据不同——它产生的结果仍然是看上去完全无害的图片,即使分析其二进制内容也是如此。 盖因其原理是利用数学算法,将数据以人不能察觉地方式存储在图片的像素或者音频的波形中。
隐写算法有各种各样,相关论文也有很多,这里不再介绍。steghide使用的方法能存储的数据量很大,因此是这里推荐的。
1. 安装
在Linux下,如果您使用的是Fedora或者Debian的发行版,应该可以从源中安装:
$ sudo yum install steghide
或者
$ sudo apt-get install steghide
在Windows下,您可以从网站sourceforge.net上下载安装EXE文件,其项目主页在这里。0.5.1版的下载链接在这里。
2. 使用
如果您使用Linux,安装后在命令行就可以直接输入steghide
调用它。在Windows上,您需要解压缩刚才下载到的zip压缩包,找到steghide.exe,然后在开始
-运行
中输入cmd
,启动命令提示符,找到这个程序的位置。
在下面的例子中,假设您在steghide.exe
所在目录或者当前目录下有2个文件:
intelligence.txt
是您要发送的情报文件lena.jpg
是您要隐藏这一情报所用的图片文件
2.1 将情报隐藏到图片的方法
使用如下命令
$ steghide embed -ef intelligence.txt -cf lena.jpg -sf output.jpg
其含义是,将intelligence.txt
隐藏到lena.jpg
,并将结果输出到output.jpg
中。
回车后,会要求您输入加密密码,再次回车确认。然后output.jpg
文件就是结果了。
2.2 将情报从图片中提取的方法
使用如下命令
$ steghide extract -sf output.jpg
或者,为了给输出结果指定一个文件名,使用
$ steghide extract -sf output.jpg -xf extracted.bin
回车后,根据需要输入密码。如果密码错误,将不能提取到文件。
使用第一种方法得到的输出结果,将使用隐写时给出的文件名。
练习题
解读如下文件,给出所隐藏的数据。隐写时没有使用密码。