"隐写术":在Linux上实现将文件隐藏到图像中(上)

2019-08-18 20:48发布

本文译自: Steganography – Hide Files Inside Images In Linux

译者:EmuLab

校对:OpenView

原文及本文遵循:[CC BY-NC 4.0 协议]

BY SK · PUBLISHED AUGUST 15, 2019 · UPDATED AUGUST 15, 2019

Steganography(隐写术)是将一个文件、图像、视频、文本文件隐藏到另一个文件中的过程。就如维基百科中所述,Steganography(隐写术)是两个希腊单词,steganos和graphein的组合,前者的意思是"掩盖,隐藏或者保护",后者的意思是"写"。消息表明这个方法首先被一个古希腊国王Histiaeus在公元前440年提出。他剪掉了最信任的侍从的头发,并将秘密信息标记到了头部。在头发重新长出来以后,他将那个仆人派送到他的一个诸侯来传达一个关于希腊即将遭到攻击的情报。现在,在我们这个年代里,Steganography(隐写术)已经得到了进化和改良并被扩展到了通过将数据信息隐藏到另一个文件来发送和接受秘密文件。欲知更多关于Steganography的内容,参见这个维基百科的相应词目。现在我们来看一下如何在Linux上将一个文件隐藏到图像中。

声明:

Steganography(隐写术)是一个宽泛的话题。这个教程只涉及如何将文件掩藏到图像文件中,这也是Steganography的核心。不要认为安全专家不能破解这个方法。这里描述的方法是非常简单的,因此即使是一个中级的安全专家也可以在几小时内将其破解掉。这里描述的内容只是出于教学目的,我们不对所有的滥用行为负责。


有不同的方法可以让我们将文件隐藏到图像文件中。这里我给出了5个方法。

方法一

这个方法不需要任何额外的软件。只需拥有基本的Linux命令行知识即可。

我有一个图像文件image.jpg以及一个目录sk。在目录中,有一个叫做secret.txt的文件,其包含有加密信息,也是我们将要嵌入到image.jpg中的文件。你可以将任何数量的文件放到sk目录中。然后我将会把sk目录压缩为一个secret.zip文件以使得其成为一个文件。最终,我将使用cat命令将secret.zip文件与图像文件(image.jpg)复合在一起并保存为ostechnix.jpg文件。

更清晰的描述是:

  1. image.jpg-任意一个图像文件
  2. sk-包含有所有秘密文件的文件夹
  3. secret.zip-sk目录的一个压缩档
  4. ostechnix.jpg-输出的包含secret.zip和image.jpg两个文件的文件

步骤 1:将图像和文件夹放在同一个目录中。我将它们都放在了Documents目录中。

步骤 2:将所有你想隐藏的文件放在"sk"文件夹中。然后将该文件压缩得到"secret.zip"文件。

步骤 3:下面打开终端。前往你保存压缩文件和图像文件的目录(这里就是Documents)。最后使用cat命令将secret.zip和test.jpg文件保存为一个文件ostechnix.jpg

$ cd Documents
$ cat image.jpg secret.zip > ostechnix.jpg

对就是那样。现在我们已经将秘密文件隐藏到了ostechnix.jpg之中。它是唯一的重要的文件,其它的文件都可以删除掉了。

ostechnix.jpg文件将会看起来就像一个普通文件一样,任何人都可以私用一个照片查看器来查看它。但是,他们不大可能知道这个文件藏有重要的东西。

要查看隐藏在ostechnix.jpg文件中的隐藏文件,只需要使用下面的命令将其解压即可:

$ unzip ostechnix.jpg

或者,

$ unzip -t ostechnix.jpg

输出示例:

Archive: ostechnix.jpg
warning [ostechnix.jpg]: 712139 extra bytes at beginning or within zipfile
(attempting to process anyway)
creating: sk/
inflating: sk/secret.txt

解压图像文件

如你在上面的输出中所见,sk目录现在又重新出现了,它包含有之前放入的隐藏文件。现在,回到文件夹中查看一下内容是否与变化吧。你将发现文件都还在那里没有丢失。

这个方法的一个坏处就是我们想图像文件传递密码。不用担心!下面的方法中,我们可以将一个口令添加到输出的文件中。

方法二: 使用Steghide

Stephide是一个能够帮助我们将数据隐藏到一个图像或者音频文件的命令行工具。它支持JPEG,BMP,WAV和AU文件。

Stephide在许多Linux发行版的默认仓库中均可获取。

在Arch Linux及其衍生系统上,你可以使用下面的命令安装它:

$ sudo pacman -S steghide

在Debian和Ubuntu上:

$ sudo apt install steghide

现在,你可以向下面这样将重要文件隐藏到一个图像或者音频文件中。我假设你将所有的需要隐藏的文件都放在了同一个目录中。如果你将它们放在不同的文件夹中,你需要在下面的命令中给出完整路径。

$ steghide embed -ef secret.txt -cf ostechnix.jpg

你会被提示输入一个口令。

Enter passphrase: 
Re-Enter passphrase:
embedding "secret.txt" in "ostechnix.jpg"... done

使用stephide将文件隐藏到图像中

在上面的例子中,我将一个叫做secret.txt的文件嵌入到了一个叫做ostechnix.jpg的文件中。你现在可以删除原始的secert.txt文件。因为,我们已将将其嵌入到了图像文件中了。如果你想嵌入多个文件,将它们都放在一个文件夹中并压缩,然后重复上面描述的掩藏操作。

要从图像中提取隐藏文件,只需要运行:

$ steghide extract -sf ostechnix.jpg

输入密码口令来提取文件:

Enter passphrase: 
wrote extracted data to "secret.txt".

使用stephide从图像中提取隐藏文件

欲知到更多信息,参见manpage,

$ man steghide

未完待续。。。

推荐阅读(点击跳转)

使用inxi来获得Linux系统详细信息

查询Linux发行版名字、版本和内核信息

在Linux上如何校验ISO镜像文件

如何迅速方便地在Ubuntu 18.04中配置IP地址

如何方便地在Linux上查询硬件信息并生成报告

如何机智地在Linux上知道你最常用到的命令

喜欢使用Linux办公、学习、hack的朋友们可以点击关注小编,小编将竭力提供更多内容给大家交流~

文章来源: https://www.toutiao.com/group/6726437004873040396/