Compression 在jpeg文件中隐藏文件是如何工作的

Compression 在jpeg文件中隐藏文件是如何工作的,compression,jpeg,steganography,Compression,Jpeg,Steganography,我在读一篇文章解释 我想知道一个文件怎么可能既包含jpeg数据又包含rar文件,而不会对图像或压缩文件造成任何可见的失真 我的猜测是,它与压缩文件或jpeg文件如何以二进制形式表示有关,但我不知道这是如何工作的 有人能详细说明一下吗?所做的只是将存档添加到JPEG流的末尾。然后,您希望您的JPEG解码器不会读取超过EOI标记的数据,在那里找到数据,并说有什么问题 JPEG图像是以SOI标记开始,以EOI标记结束的字节流 ZIP和RAR是字节流。ZIP流从504b开始。RAR流以52 61 72

我在读一篇文章解释

我想知道一个文件怎么可能既包含jpeg数据又包含rar文件,而不会对图像或压缩文件造成任何可见的失真

我的猜测是,它与压缩文件或jpeg文件如何以二进制形式表示有关,但我不知道这是如何工作的


有人能详细说明一下吗?

所做的只是将存档添加到JPEG流的末尾。然后,您希望您的JPEG解码器不会读取超过EOI标记的数据,在那里找到数据,并说有什么问题

JPEG图像是以SOI标记开始,以EOI标记结束的字节流

ZIP和RAR是字节流。ZIP流从504b开始。RAR流以52 61 72 21 1A 07开始

上面链接中描述的方法获取(多个)JPEG流的二进制副本,并向其附加ZIP或RAR流


RAR/ZIP解码器扫描流,直到找到RAR或ZIP的签名(忽略JPEG流)

这个答案并没有解决您给出的链接中的确切情况,但它提供了另一种隐藏数据的方法:

理论上也可以在JPEG图片本身中隐藏文件,但需要一个复杂的程序来写入编码数据,然后再次读取

基本上,JPEG照片包含大量信息,如果更改,人眼将看不到这些信息。想象你有一张穿着蓝色衬衫的人的照片。如果你放大那件衬衫,你会发现它不是一种均匀的蓝色,而是由许多颜色斑点组成的,其中大部分是蓝色色调(但也可能是其他颜色)。你可以很容易地将这些斑点中的一些改变为稍微不同的色调,这不会对图片造成明显的可见差异

一个聪明的程序可以通过巧妙地将像素改变为表示数据的模式,在照片中嵌入代码。一个非常简单的例子:如果“色调”(即色调)由0到255之间的数字表示,则偶数色调的像素可以表示“0”位,奇数色调的像素可以表示“1”位。人眼很难在图片中发现这样的差异


这是一个古老的想法,本文讨论了以这种方式可以隐藏多少数据:

有一个简单的算法,我用matlab实现了它。如果您将图像分割为8位。最高有效位具有最有价值的信息,您可以删除位0和位1,而无需对原始图像进行任何更改。所以你可以把你的文件,而不是位0和1。我在anil.k.jain的书中看到了这种算法。

一般来说,将一个文件隐藏在另一个文件中是一种称为“隐藏”的做法。您提供的链接中描述的方法只是使用
+
操作符将
.rar
连接到
.jpg
的末尾,利用每种文件类型的不同头@user3344003很好地解释了为什么它在中工作。这不会扭曲图像,因为图像数据保持不变


在图像中隐藏文件的另一种常用方法是使用每个字节的最低有效位(LSB)。执行此操作的方法是将图像位流中的每8位替换为要隐藏的文件的下一位。这是因为图像的颜色可以稍微扭曲,而不容易被人眼察觉。在这种方法中,磁盘上的映像大小不会像链接中的方法那样增长。这使得隐藏文件的证据更难检测。有关此隐写术和其他隐写术方法的详细信息,请参阅。

以及archieve程序如何跳过jpeg数据以访问arhieve。它如何知道jpeg结束和归档数据开始的位置?它必须在数据流中查找自己的签名。想必这个技巧适用于大多数二进制文件类型。因此,它可能不会扫描JPEG并查找EOI标记。