隐写术——在 Linux 中隐藏图像中的文件

隐写术 是将文件、图像、视频、文本隐藏在另一个文件中的过程。 正如维基百科中提到的,隐写术是两个希腊词的组合, 斯蒂加诺斯 这意味着“覆盖、隐藏或保护”,并且 石墨烯 这意味着“写作”。 消息人士称,这种方法首先被 组织学,古希腊国王,早在公元前 440 年。 他剃了他最信任的仆人的头发,并将秘密信息标记在他的头上。 头发重新长出后,他派那个仆人去找他的一个附庸,传达一些关于即将袭击希腊的信息的信息。 现在,在现代,隐写术得到了发展,得到了很大的改进,并被广泛用于通过将数字秘密信息隐藏到另一个文件中来发送和接收它们。 有关隐写术的更多详细信息,请参阅 这个链接. 现在让我们看看如何在 Linux 中隐藏图像中的文件。

免责声明:

隐写术是一个广泛的话题。 本教程仅介绍如何将文件隐藏在图像中,这是隐写术的核心概念。 请不要假设任何安全专家都无法破解这一点。 此处描述的方法非常基本,因此即使是中级安全专业人员也可以在几个小时内轻松破解它。 下面描述的这些步骤纯粹是出于教育目的。 我们不对任何形式的滥用负责。

在 Linux 中隐藏图像中的文件

我们可以用不同的方法将文件隐藏在图像中。 在这里,我给出了 5 种方法。

方法一

这种方法不需要任何额外的软件。 只需一个基本的 Linux 命令行知识就足够了。

我有一个名为的图像文件 图像.jpg 和一个名为 sk. 在这个目录里面,有一个文件叫做 秘密.txt 其中有一些机密信息。 这是我们要嵌入到 image.jpg 文件中的文件。 您可以在此目录中放置要隐藏的任意数量的文件。 然后,我要压缩目录 sk 并将其另存为 秘密.zip 使其成为单个文件。 最后,我将使用连接 zip 文件 (secret.zip) 和图像文件 (image.jpg) 命令并将其另存为 ostechnix.jpg.

为了更清楚地说明事情,

  1. 图像.jpg – 随机图像文件。
  2. sk – 包含所有机密文件的目录。
  3. 秘密.zip – 档案 sk 目录。
  4. ostechnix.jpg – 包含 secret.zip 和 image.jpg 的输出图像文件。

第1步: 将图像文件和目录放在一个文件夹中。 我把它们都放进去了 文件 文件夹。

第2步: 将要隐藏的所有文件移动到文件夹“sk”中。 然后,压缩此文件夹并将其另存为 “秘密.zip”. 要压缩文件夹,只需右键单击它,然后选择 压缩.

第 3 步: 接下来打开终端。 转到您存储 zip 和图像文件的位置(在我们的例子中是 文件)。 最后,连接 秘密.zip测试.jpg 文件,并将它们保存为 ostechnix.jpg 使用 命令。

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

就是这样。 我们现在已经把机密文件隐藏在里面了 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 里面有秘密文件的已经被提取出来了。 现在,返回文件夹并检查内容。 您将在那里看到所有文件。

这种方法的一个缺点是我们不能向图像文件添加任何密码。 不用担心! 在以下方法中,我们可以将密码短语添加到输出文件中。

方法 2 – 使用 Steghide

斯特海德 是一个命令行实用程序,可帮助我们隐藏图像或音频文件中的机密数据。 它支持JPEG、BMP、WAV和AU文件。

Steghide 在许多 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

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

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

在上述 example,我嵌入了一个名为 秘密.txt 成一个名为的图像文件 ostechnix.jpg. 您现在可以删除原始的 secret.txt 文件。 因为,我们只是嵌入到一个图像文件中。 如果要嵌入多个文件,请将它们放在一个文件夹中并压缩,然后如上所述将其隐藏。

要从图像中提取秘密文件,只需运行:

$ steghide extract -sf ostechnix.jpg

Enter 提取它的密码:

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

使用 steghide 从图像中提取文件

使用 steghide 从图像中提取文件

有关更多详细信息,请参阅手册页,

$ man steghide

方法 3 – 使用 Outguess

猜测 是另一个命令行隐写工具,用于在图像中隐藏机密文件。 目前,它支持 PPM、PNM 和 JPEG 图像格式。

要将其安装在 Debian、Ubuntu 和其他基于 DEB 的系统上,请运行:

$ sudo apt install outguess

安装后,转到您保存秘密文件和图像的位置,然后使用以下命令将秘密文件嵌入到图像中:

$ outguess -d secret.txt ostechnix.jpg output.jpg

样本输出:

Reading ostechnix.jpg....
JPEG compression quality set to 75
Extracting usable bits: 158203 bits
Correctable message size: 77641 bits, 49.08%
Encoded 'secret.txt': 160 bits, 20 bytes
Finding best embedding...
0: 88(45.8%)[55.0%], bias -17(-0.19), saved: -1, total: 0.06%
1: 90(46.9%)[56.2%], bias -27(-0.30), saved: -1, total: 0.06%
12: 85(44.3%)[53.1%], bias -36(-0.42), saved: 0, total: 0.05%
26: 91(47.4%)[56.9%], bias -45(-0.49), saved: -1, total: 0.06%
174: 87(45.8%)[54.4%], bias -48(-0.55), saved: 0, total: 0.05%
174, 39: Embedding data: 160 in 158203
Bits embedded: 190, changed: 87(45.8%)[54.4%], bias: -48, tot: 158844, skip: 158654
Foiling statistics: corrections: 77, failed: 6, offset: 864.696970 +- 310.577032
Total bits changed: 39 (change 87 + bias -48)
Storing bitmap into data...
Writing output.jpg....

在这里, 输出.jpg 文件是包含我们机密数据文件的文件。 保持安全并删除其他所有内容。

您还可以向输出文件添加密码,如下所示。

$ outguess -k "my secret key" -d secret.txt ostechnix.jpg output.jpg

用您自己的密码替换“我的密钥”。

要提取文件,只需执行以下操作:

$ outguess -r output.jpg secret.txt

样本输出:

Reading output.jpg....
Extracting usable bits: 158203 bits
Steg retrieve: seed: 174, len: 20

如果您使用了密码,请改用以下命令:

$ outguess -k "my secret key" -r output.jpg secret.txt

有关更多详细信息,请参阅手册页。

$ man outguess

我们已经看到了三个命令行实用程序来隐藏图像或音频中的文件。 如果你不喜欢命令行方式,这里有两个图形隐写工具。

方法 4 – 使用 Stegosuite

隐秘套件 是一种图形隐写工具,用于隐藏图像中的文件。 它是一个免费的开源隐写工具 爪哇. 它用 AES 嵌入数据的加密方法。 它支持 BMP、GIF 和 JPG 图像格式。

要将其安装在 Debian、Ubuntu 和其他基于 DEB 的系统上,请运行:

$ sudo apt install stegosuite

安装后,从 Dash 或 Menu 启动 Stegosuite。

隐秘套件界面

隐秘套件界面

点击 文件 -> 打开 从菜单栏中选择要用于隐藏文件的图像。 然后在第一列中输入消息。 右键单击第二列并选择“添加文件..”。 最后在第三列输入密码。

在 stegosuite 中添加文件

在 stegosuite 中添加文件

最后,点击 嵌入 Stegosuite 界面底部的按钮。

使用 stegosuite 嵌入文件

使用 stegosuite 嵌入文件

现在将在您从中选择图像的同一文件夹中创建一个名为“filename_embed”的新图像文件。 例如,如果您从 Documents 文件夹中选择了名为“image.jpg”的图像,则会在 Documents 文件夹中创建一个名为“image_embed.jpg”的新图像文件。

要从图像中提取秘密文件,只需在 Stegosuite 界面中再次打开它,输入密码并单击 提炼 按钮。

使用 stegosuite 提取文件

使用 stegosuite 提取文件

所有文件都将被提取到同一个文件夹中。

有关更多详细信息,请参阅 Stegosuite 网站.

方法 5 – 使用 Steg

斯泰格 是一个简单的、跨平台的、图形化的隐写工具,使用 C++ 编程语言。 它是一款便携式软件,因此无论您使用何种操作系统,只需下载、随身携带并立即开始使用。 Steg 支持 JPEG、JPG、TIFF、PNG 和 BMP 图像格式。 它使用隐写术和密码术技术将数据隐藏在压缩或未压缩的图像中。

用法

点击 这个链接 下载 Steg 应用程序。 它适用于 32 位和 64 位架构。

或者,只需根据您使用的架构使用以下命令下载它。

对于 64 位:

$ wget https://googledrive.com/host/0B-_yxJMDtRxyUExLZzZ3S2VDbjQ/steg-v1.0.0.2-linux64.tgz

对于 32 位:

$ wget https://googledrive.com/host/0B-_yxJMDtRxyRDNGNk1YcXR0UTg/steg-v1.0.0.2-linux32.tgz

下载后,使用命令解压:

$ tar -xvzf steg-v1.0.0.2-linux64.tgz

进入 Steg 目录:

$ cd steg-v1.0.0.2-linux64/

并且,键入以下命令来运行它。

$ ./steg.sh

点击 是的 接受许可协议。

接受Eula_006

单击确定继续。

INFO_007

这就是 Steg 应用程序默认界面的样子。

Steg_008

现在,让我们在图像中隐藏一些数据。

为此,请访问 文件 -> 打开通用图像 或者 打开 JPEG 图像. 确保您已选择 大尺寸图像 在其中存储更多数据。 您选择的图像越大,您可以在图像中保存的越多。

打开图像后,原始图像和修改后的图像(输出图像)将分别显示在左右面板中。 此外,它还显示在右下角的图像内存储数据的可用大小。

使用 Steg 在 Linux 中隐藏图像中的文件

使用 Steg 在 Linux 中隐藏图像中的文件

现在,去 隐藏 -> 隐藏数据 从顶部菜单栏中。 选择要隐藏的文件。 确保您选择的文件小于修改后的图像中的可用空间。 添加数据后,您将看到一个确认对话框,其中显示: 数据成功隐藏.

INFO_010

重要的部分来了。 您可以选择不同的加密模式。

  • 汽车: 数据将被加密,但您不需要密码或密钥来提取数据。
  • 对称: 您必须提供 PassPhrase 来加密数据,而收件人将需要相同的 PassPhrase 来提取它。
  • 非对称无符号: 当你想隐藏数据(你是发送者)时,只需要接收者的公钥。 当您想要提取数据(您是接收者)时,只需要您的私钥。
  • 非对称签名: 当您想隐藏数据(您是发送者)时,需要接收者的公钥和您的私钥。 当您想提取数据(您是接收者)时,只需要您的私钥,但需要发送者的公钥。 如果您不提供发件人的公钥,在提取过程结束时,您将收到未验证发件人身份的警告。 如果您提供发件人的公钥,您将收到签名验证是否成功的通知。

您可以选择任何您喜欢的加密方法。

要选择特定的加密方法,请转到 编辑 -> 配置 从菜单栏中。 默认加密方法是 汽车. 此外,您可以根据需要在文件中嵌入一些消息。

Steg Options_011

一切正常后,点击 Save 按钮,然后将其保存在您喜欢的任何位置。

Save  媒体_012

完毕! 图像数据在图像内部被加密。 此图像看起来像普通图像。 您可以使用任何图像查看器应用程序查看它。

要提取隐藏数据,只需在 Steg 应用程序中打开加密图像。 为此,请访问 提取 -> 提取数据 从菜单栏中。

选择要保存数据的位置。 完毕!

INFO_013

就是这样。 您现在可以查看数据。

如您所见,这非常容易遵循,不需要任何特殊技能。 只需打开一张图片,隐藏一些机密数据,然后将其传递。

有关 Steg 的更多详细信息,请查看 官方网站.

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!