如何在不破坏图像的情况下在 jpg 或 gif 等照片文件中写入一些信息?当然没有在照片上显示它,因为整个想法是在任何人都无法检测到的照片文件中发送信息(在某种程度上提供安全/隐私)!
8 回答
您可以将 gif 和 zip(要隐藏的信息)连接到一个文件中。Gifs 从文件开头读取,而 zip 从文件末尾读取。
在 linux 中创建这样的文件:
$ cat file1.gif >> outfile.gif
$ cat file2.zip >> outfile.gif
生成的文件应该有 file1.gif 和 file2.zip 的大小,并且应该可以被任何 gif 查看器和 zip 文件处理程序打开。
我敢肯定有很多方法。这是一个:
在照片中,颜色的细微变化通常肉眼无法察觉,或者即使注意到,也很容易被误认为是图片质量的缺陷。
举个简单的例子,假设你有一个灰度 GIF 图像,其中调色板按从白色到黑色的顺序排列,中间有平滑的灰色范围。我不确定您对图形文件格式了解多少,但在 GIF 中,每个像素有一个字节,每个可能的字节值都映射到某种特定的颜色。所以在这种情况下,我们可以说调色板#0=RGB(0,0,0),调色板#1=RGB(1,1,1),...调色板#255=RGB(255,255,255)。
然后你拍一张普通的、真实的照片。将您的秘密信息分解成单独的部分。将每个调色板索引号的最后一位设置为消息的连续位。
例如,假设原始照片的前 8 个像素是 01 00 C9 FF FF C8 42 43。您的消息以字母“C”开头,ascii 代码为 0110 0111。所以您更改了第一个字节的最后一位为 0,将字节从 01 更改为 00。将第二个字节的最后一位更改为 1,将字节从 00 更改为 01。将第三个字节的最后一位更改为 1。它已经是 1,所以这使得没有不同。等等,你最终得到的 8 个字节编码为 00 01 C9 FE FF C9 43 43。
颜色的变化非常微妙,以至于任何人都不太可能注意到图片。即使他们确实注意到了,除非他们有怀疑的理由,否则他们很可能只是断定图片质量不够完美。
当然,没有什么说您必须为秘密消息使用每字节 1 位。根据您认为可以避免的质量下降程度,您可以每字节使用 2 位,或者每隔一个字节更改 1 位,等等。
当然,彩色照片也可以使用相同的技术:将每个 RGB 分量中的最后一位更改为每个像素编码 3 位,等等。
嘿,这种方法被称为隐写术。有了它,我们不仅可以在图像中隐藏消息,还可以在音频、视频和其他格式中隐藏消息。
这是一个名为steganotool的开源隐写术软件该项目是一个开源隐写术工具,可用于隐藏和提取位图图像中的文本。
关于隐写术媒体
图像中的隐写术
这种类型的隐写术对发现非常有效,并且可以用于多种目的。这些目的可以包括验证、隐藏消息和传输加密密钥。这种类型的隐写术最有效的方法通常是最低有效位方法。这仅仅意味着隐藏的消息将改变图片中字节的最后一位。通过改变最后一位,载体图像内该像素的颜色将相对没有变化。这可以防止消息被轻易检测到。隐藏信息的最佳图像文件类型是 24 位位图。这是由于大文件大小和高质量。
音频中的隐写术
在音频文件中,隐藏信息最突出的方法是低位编码方法。低位编码方法有点类似于图像文件中使用的最低有效位方法。机密信息附在文件末尾。低位编码的问题之一是人耳可以注意到它。如果有人试图隐藏信息,这可能是有风险的,因为它很容易被发现。扩频方法是另一种用于隐藏音频文件中信息的方法。这种方法的作用是向音频广播添加随机噪声。这种方法使信息能够在整个频谱中传播并保持隐藏在随机噪声下。在音频隐写术中看到的最后一种方法是回声隐藏数据。此方法旨在通过使用声音文件中自然出现的回声来隐藏信息。然后,可以将额外的声音添加到这些回声中,额外的声音是隐藏的信息。这是隐藏信息的充分方法,特别是因为它在某些情况下甚至可以改善原始音频文件的声音。
视频中的隐写术
视频中的隐写术基本上是在视频的每一帧中隐藏信息。视频中只隐藏了少量信息,通常根本不引人注意,但是隐藏的信息越多,它就会变得越明显。这种方法也很有效,但必须正确完成,否则会显示更多信息而不是隐藏。
文档中的隐写术
这基本上是在文档行的末尾添加空格和制表符。这种类型的隐写术非常有效,因为在大多数文本/文档编辑器中,人眼看不到使用的空格和制表符。
也可以参考这个开源项目
这篇文章可能非常有用。
如果要在 jpeg 文件中隐藏数据(文本、其他图像等),只需将其附加到文件末尾即可。查看图像时,您只会看到原始图像,您添加的数据将被忽略。
虽然不是隐藏数据的超级骗子方式,但这是隐藏另一个 jpeg 的好方法,就像任何人在记事本或十六进制编辑器中打开文件一样,他们可能不会注意到有两个 jpeg 而不是一个,因为结尾无论如何,第二张图像的图像看起来就像第一张。
在 Windows 中,您可以使用简单的命令在图像中隐藏存档:复制 /b cat.jpg + Documents.rar cat_new.jpg。然后使用例如 winrar 从存档中提取数据 ftom 图像。
但更好的方法是使用隐写术。
适用于 linux 和 windows 的简单程序:http: //linux01.gwdg.de/~alatham/stego.html
使用此程序,您将使用密码短语,没有它甚至没人会知道,您在图片中隐藏了一些数据))
gif 文件中的压缩数据是可变大小的块。每个块都以一个长度字节开始。通常这些块是255字节的数据(长度字节说255)除了最后两个块(最后一个是0)
但是您可以使用大小拼写出消息的块重新编码 gif,例如使用 ASCII 文本的字符或1
2
3
4
表示00
01
10
11
二进制数据的字节,
对 gif 的字节频率分析将显示少于预期的 255 个字节。并且尺寸会比原始尺寸大,但图像看起来完全一样。
你不需要任何类型的高级工具来隐藏图像中的文件——你只需要知道一些基本的 DOS 命令……只需点击下面的链接,看看如何做到这一点(这是图像隐写术的简短描述):
https://www.youtube.com/watch?v=ox9ArqXtaWw&list=PLqEKOAKK4IbSTfDJZE_lH-DiOjOzZUczx&index=2