java bmp信息隐藏_BMP图像信息隐藏及检测
1.實驗?zāi)康?/p>
(1)了解BMP圖像文件格式
(2)了解利用BMP圖像文件隱藏信息的原理
(3)掌握基于24位真彩色BMP圖像的文件信息隱藏方法
2.實驗內(nèi)容
(1)在圖像數(shù)據(jù)后隱藏信息
(2)文件頭與圖像數(shù)據(jù)之間隱藏信息
(3)BMP圖像文件隱藏信息的檢測
(4)在圖像文件頭和信息有的保留字段中隱藏信息
(5)灰度、二值圖像的其他信息隱藏及檢測(擴展)
3.實驗原理
實驗所使用的工具為:matlab2020a
針對文件結(jié)構(gòu)的信息隱藏方法需詳細(xì)掌握文件格式,利用文件結(jié)構(gòu)塊之間的關(guān)系或根據(jù)塊數(shù)據(jù)和塊大小之間的關(guān)系來隱藏信息。
BMP(Bitmap-File)圖形文件是Windows采用的常見圖形文件格式,要利用BMP位圖進行信息隱藏首先需要詳細(xì)了解BMP文件的格式,BMP圖像文件結(jié)構(gòu)比較單一而且固定,BMP圖像由文件頭、信息頭、調(diào)色板區(qū)和數(shù)據(jù)區(qū)四個部分組成,而24位真彩色圖像中沒有調(diào)色板信息。24位真彩色BMP位圖文件包括3部分。第一部分是BMP文件頭。前2個字節(jié)是“BM”,是用于識別BMP文件的標(biāo)志;第3、4、5、6字節(jié)存放的是位圖文件的大小,以字節(jié)為單位;第7、8、9、10字節(jié)是保留的,必須為0;第11、12、13、14字節(jié)給出位圖陣列相對于文件頭的偏移,在24位真彩色圖像中,這個值固定為54;19,20,21,22表示的是圖像文件的寬度,以像素為單位;23,24,25,26表示的是圖像文件的高度,以像素為單位。第二部分是位圖信息頭。從第29個字節(jié)開始,第29、30字節(jié)描述的是像素的位數(shù),24位真彩色位圖。該位的值位0x18;第三部分是數(shù)據(jù)區(qū)。從第55個字節(jié)開始,每3個字節(jié)表示一個像素,這3個字節(jié)依次表示該像素的紅、綠、藍(lán)亮度分量值。
在不影響圖像正常顯示情況下,可使用以下四種方法在24位真彩色BMP圖像中隱藏信息。
在圖像文件尾部添加任意長度的數(shù)據(jù),秘密信息存放在文件尾部可以減少修改文件頭的數(shù)據(jù)量,僅需修改文件頭中文件長度的值即可。
在調(diào)色板或者位圖信息頭和實際的圖像數(shù)據(jù)之間隱藏數(shù)據(jù),如果將秘密數(shù)據(jù)放在文件頭與圖像數(shù)據(jù)之間,則至少需要修改文件頭中文件長度、數(shù)據(jù)起始偏移地址這兩個域的值。
修改文件頭和信息頭中的保留字段隱藏信息。
在圖像像素區(qū)利用圖像寬度字節(jié)必須是4的倍數(shù)的特點,在補足位處隱藏數(shù)據(jù)。
4.實驗記錄
(1)在實際的圖像數(shù)據(jù)后隱藏數(shù)據(jù)
待隱藏的秘密信息文件名稱為hidden.txt,xxx1.bmp為載體圖像,將載體和秘密信息放置在同一個目錄下,在Windows的MS-DOS方式下執(zhí)行命令Copy xxx1.bmp /b + hidden.txt /a xxx2.bmp,其中參數(shù)/b指定以二進制格式復(fù)制、合并文件,參數(shù)/a以ASCII格式復(fù)制、合并文件。執(zhí)行該命令后,生成一個新的xxx2.bmp文件,使用圖像瀏覽工具瀏覽該文件發(fā)現(xiàn)與原始載體圖像幾乎完全相同,信息隱藏在baboon.bmp文件的尾部。
圖1-1 生成隱藏信息的圖片
從BMP圖像的結(jié)構(gòu)中可知,圖像的3、4、5、6四個字節(jié)存放整個BMP圖像的長度。使用該方法隱藏信息時,未修改圖像文件的文件長度字節(jié),通過比較文件的實際長度和文件中保存的文件長度,就可發(fā)現(xiàn)該圖像是否隱藏秘密信息。
當(dāng)圖像隱藏信息后,如diff=11,表示隱藏11個字節(jié)的信息。因此要在圖像中隱藏信息,需修改圖像文件長度,也就是修改第3、4、5、6字節(jié),如此例中需在圖像中隱藏11個字節(jié)信息,需要將文件長度增加11。在Ultraedit中手工將第3個字節(jié)由原來的0x36(十進制的54),變?yōu)?x41(十進制的65),然后再運行上述程序,發(fā)現(xiàn)diff=0,表示圖像隱藏并修改文件的長度后,通過該種方法無法發(fā)現(xiàn)圖像中是否隱藏信息,同時使用圖像查看工具打開圖像文件,發(fā)現(xiàn)圖像再視覺上和原圖沒有任何差別。
圖1-2 圖像隱藏11個字節(jié)信息
圖1-3 圖像修改前
圖1-4 圖像修改后
圖1-5 修改完后diff=0
????????
圖1-6 修改前后圖對比(右圖為隱藏信息后)
(2)文件頭與圖像數(shù)據(jù)之間隱藏信息
在數(shù)據(jù)區(qū)開始之前隱藏信息,也就是在54和55個字節(jié)之間隱藏信息,隱藏的秘密信息從hidden.txt文件中讀取,此種方法修改圖像數(shù)據(jù)的偏移量和圖像書的文件長度。
圖2-1 hidden.txt文件
圖2-2 隱藏hidden.txt文件的內(nèi)容
圖2-3 隱藏信息前
圖2-4 隱藏信息后
????????
圖2-5 隱藏前后圖片對比(右圖為隱藏后)
(3)BMP圖像文件隱藏信息的檢測
在BMP圖像中隱藏信息的時候一般都是通過修改文件的偏移量和圖像文件中圖像的長度來隱藏信息,但在BMP圖像文件中,file_length=biwidthbiBytecountbiHeight+bfoffBits,其中biwidth,biheight表示圖像文件的寬度和高度,bfoffBits表示文件頭到實際位圖圖像數(shù)據(jù)之間的偏移量。
通過diff的不同來比較圖像是否在結(jié)尾處隱藏了信息,此種方法不能檢測對于修改偏移量的隱藏檢測。
圖3-1 檢測文件隱藏了信息
(4)在圖像文件頭和信息頭的保留字段中隱藏信息
BMP圖像文件中有很多從不使用的保留字節(jié),如7、8、9、10字節(jié)是保留的,必須是0,可在第7、8、9、10字節(jié)隱藏秘密信息。
圖4-1 在保留字節(jié)隱藏信息
圖4-2 隱藏信息前
圖4-3 隱藏信息后
????????
圖4-4 保留字節(jié)隱藏信息對比圖(右圖為隱藏信息后)
(5)灰度、二值圖像或其他圖像信息隱藏及檢測
LSB全稱為 Least Significant Bit(最低有效位),是一種常被用做圖片隱寫的算法(在CTF中經(jīng)常見到她的身影)。LSB屬于空域算法中的一種,是將信息嵌入到圖像點中像素位的最低位,以保證嵌入的信息是不可見的,但是由于使用了圖像不重要的像素位,算法的魯棒性差,水印信息很容易為濾波、圖像量化、幾何變形的操作破壞。
1) 信息嵌入部分
圖5-1 將圖片轉(zhuǎn)換為灰度圖
圖5-2 經(jīng)過代碼將圖轉(zhuǎn)換為灰度圖,并產(chǎn)生文件xxx3.bmp文件
圖5-3 信息隱藏代碼
圖5-4 信息隱藏前后圖片的對比
2) 信息提取部分
圖5-5 信息提取代碼,其中紅框中內(nèi)容為提出信息的文本
圖5-6 查看生成的hid.txt文件,其中內(nèi)容為我們所隱藏的信息
5.實驗結(jié)論與建議
通過這個實驗,了解了BMP圖像文件格式,以及隱藏信息的原理,并可以通過在實際的圖像數(shù)據(jù)后隱藏信息、文件頭與圖像數(shù)據(jù)之間隱藏信息和在圖像文件頭和信息頭的保留字段中隱藏信息這三種方式對BMP圖像進行信息隱藏。
總結(jié)
以上是生活随笔為你收集整理的java bmp信息隐藏_BMP图像信息隐藏及检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中的case1怎么说_Java
- 下一篇: 创建商品类java_SSH框架网上商城项