2015-04-14 32 views
16

我正在閱讀一篇解釋How to Hide Files in JPEG Pictures的文章。隱藏jpeg文件中的文件如何工作

我不知道它是如何可能爲一個文件,同時包含JPEG數據和RAR文件沒有任何明顯的失真無論是圖像還是到壓縮文件。

我的猜測是,它是與如何爲壓縮文件或JPEG文件以二進制形式表示的,但我不知道這是如何工作。

有人可以詳細說明嗎?

回答

10

所做的就是將存檔添加到JPEG流的末尾。然後你希望你的JPEG解碼器不會讀過EOI標記,在那裏找到數據,並說出錯的地方。

JPEG圖像是以SOI標記開始並以EOI標記結束的字節流。

ZIP和RAR是字節流。 ZIP流以50 4B開頭。甲RAR流開始以52 61 72 21 1A 07.

在上面的鏈路中所描述的方法採用(多)一個JPEG圖像流的二進制副本和附加一個ZIP或RAR流給它。

RAR/ZIP解碼器掃描流直到他們找到RAR或ZIP的簽名(忽略JPEG流)。

+0

以及如何讓archieve程序跳過jpeg數據到arhieve。它如何知道jpeg結束並歸檔數據的位置? – yasar

+0

它必須在數據流中尋找自己的簽名。據推測,這個技巧將適用於大多數二進制文件類型。所以它可能不會掃描JPEG並尋找EOI標記。 – user3344003

3

這個答案不會解決你給的鏈接完全相同的情況下,但它提供了隱藏數據的另一種方式:

這也將是理論上可能隱藏JPEG圖片本身內的文件,但你會需要一個複雜的程序來編寫編碼數據,然後再讀取它。

基本上,JPEG照片包含大量的信息,如果它發生變化,對人眼來說不會引起注意。想象一下,你有一個藍色襯衫的人的照片。如果你放大那件襯衫,你會發現它不是一種藍色,而是由許多顏色組成,其中大部分顏色都是藍色(但也有一些顏色可能是其他顏色)。你可以很容易地將這些斑點變成略微不同的色調,並且不會在圖像上產生明顯的差異。

聰明的程序可以通過巧妙地將像素改變爲代表數據的模式來在照片中嵌入代碼。一個非常簡單的例子:如果「色調」(即色調)由0到255之間的數字表示,則偶數色調的像素可以表示「0」位,奇數色調的像素表示「1」位。人眼很難檢測到圖像中的這種差異。

這是一箇舊的觀念和本文討論了多少數據是如何被隱藏在這樣:High capacity data hiding in JPEG-compressed images (2004)

0

有一個簡單的算法,我用MATLAB來實現它。如果你把你的圖像分成8位。最重要的位具有最有價值的信息,並且您可以刪除位0和位1,而不會在原始圖像上進行任何更改。所以你可以把你的文件,而不是位0和1.我看到anil.k.jain書中的這個算法。

1

通常,在另一個文件中隱藏文件是一種被稱爲Steganography的做法。您提供的鏈接中描述的方法使用+運算符簡單地將.rar連接到.jpg的末尾,利用每種文件類型的不同標題。@ user3344003很好地解釋了爲什麼在his/her answer中有效。這不會扭曲圖像,因爲圖像數據保持不變。

在圖像中隱藏文件的另一種常見方法是使用每個字節的最低有效位(LSB)。執行此操作的方式是將圖像比特流中的第8位替換爲您希望隱藏的文件的下一位。這是有效的,因爲圖像的顏色可能會輕微扭曲而不易被人眼感知。在這種方法中,磁盤上映像的大小不會像鏈接中的方法那樣增長。這使得隱藏文件的證據很難被發現。有關此方法和其他隱寫方法的詳細信息,請參閱this paper by Bret Dunbar