圖種制作基本教程
將一或多個(gè)壓縮文件復(fù)制進(jìn)圖片格式的文件,得到的就是簡(jiǎn)單的圖種。操作如下——
選擇作為載體的圖片和要隱藏的壓縮文件。為了方便定位,可以把它們放在同一個(gè)文件夾下。

圖片載體本身只有40.7KB?,F(xiàn)在將這一組圖片和一個(gè)視頻分別打包為壓縮文件:

打開(kāi)cmd,進(jìn)入到當(dāng)前文件夾后,輸入復(fù)制命令:

語(yǔ)法很簡(jiǎn)單,copy /b [圖片載體] + [隱藏文件1] + [隱藏文件2] + … [圖片載體],表示將圖片和隱藏文件一同復(fù)制到圖片本身。得到的簡(jiǎn)單的圖種:

圖種仍然是可以正常打開(kāi)的,因?yàn)槠渲邪瑘D片本身的信息,且此時(shí)后綴名仍為jpg。
接收方要想獲取圖種中隱藏的文件,只需要更改后綴名為壓縮文件(rar、zip、7z等)并解壓即可。
需要注意的是,直接進(jìn)行解壓只能獲得一個(gè)壓縮文件。如果圖種中的隱藏文件只有一個(gè),則使用不同解壓軟件都可以得到這一文件;但若像上面舉的例子那樣隱藏了兩個(gè)文件,經(jīng)試驗(yàn)可以發(fā)現(xiàn),使用不同解壓軟件可能得到不同的結(jié)果,如360壓縮解壓得到了視頻,而winrar解壓得到了那一組圖片——都只得到了一個(gè)壓縮文件。?
最基礎(chǔ)的部分到這里結(jié)束,下面講的是如何從圖種中獲取多個(gè)文件或指定文件。

從剛才的例子可以看出,一個(gè)圖種中藏入兩個(gè)文件是容易獲得的(只藏一個(gè)就更容易了)。那么,如果想讓接收方多費(fèi)點(diǎn)心思才能獲得隱藏文件呢?
應(yīng)該能想到,最簡(jiǎn)單的方式是多加幾個(gè)文件。比如下面這個(gè)例子:

這是一個(gè)已制作好的圖種,其大小約為90MB。向其中添加的文件按順序?yàn)閮蓮垐D片,一個(gè)視頻(目標(biāo)文件),兩張圖片(圖片用作幌子)。這樣,即使用不同解壓軟件,也只能得到首尾兩張圖片。
想獲取其中全部的壓縮包,需要一些額外的操作。
為什么解壓軟件只會(huì)解壓一個(gè)壓縮包?實(shí)際上,不同后綴的壓縮文件有著不同卻固定的格式。解壓軟件掃描文件,在讀到第一個(gè)壓縮包(具體是順序讀還是逆序讀因軟件而異)的頭部時(shí)開(kāi)始工作,直到其尾部便停止,因而忽略了后續(xù)的信息。
那么,就要提醒解壓軟件掃描全文。一個(gè)簡(jiǎn)單的辦法是使用壓縮包修復(fù),這個(gè)功能部分解壓軟件是自帶的(比如winrar),當(dāng)然也可以去網(wǎng)上找專門(mén)的修復(fù)工具。以剛才的例子:

點(diǎn)擊修復(fù),得到一個(gè)新的壓縮包:

正常解壓,就可以得到全部的五個(gè)壓縮包內(nèi)的文件:

這可能是最簡(jiǎn)單的方法了,而且效果足夠好。不過(guò),如果有興趣,可以繼續(xù)看下文的另一種方法——稍微復(fù)雜卻更具有啟發(fā)性:從文件編碼入手,但首先,你需要一個(gè)能將文件以二進(jìn)制或十六進(jìn)制格式打開(kāi)的工具(別再嘗試記事本打開(kāi)了),比如010Editor就挺好用的,參加過(guò)CTF(奪旗賽)的應(yīng)該都有聽(tīng)說(shuō)過(guò)。接下來(lái)就用它演示。

將圖種文件打開(kāi)(十六進(jìn)制):

有非常非常多行。但我們只需要查找定位到壓縮文件的頭部即可。比如本例中,zip格式的頭部為50 4B 03 04,因此ctrl+F直接查找這一組字符:

剛好對(duì)應(yīng)隱藏的五個(gè)壓縮包。當(dāng)然可以分別把它們都提取出來(lái),但現(xiàn)在只提取視頻。由于大小差距明顯,很容易明白,這個(gè)視頻文件即是第三行到第四行的那一段(這是故意的,一個(gè)接近90MB的視頻藏在一堆1MB左右的圖片中實(shí)在是很顯眼)。選中這一段,將其導(dǎo)出為十六進(jìn)制文件:


得到一個(gè)很大的txt:

甚至比視頻本身都大得多(可以考慮下原因)。雖然沒(méi)什么用,但如果嘗試雙擊打開(kāi)它,你可能要等上一小段時(shí)間,因?yàn)椤?/p>
這時(shí),如果直接把文件后綴改成.zip進(jìn)行解壓,可能會(huì)提示壓縮包已損壞,因?yàn)楹雎粤艘恍┘?xì)節(jié)。除了使用壓縮包修復(fù)(話說(shuō)都有修復(fù)功能了為什么還要用這方法)以外,一個(gè)方法是再次使用010Editor,點(diǎn)擊導(dǎo)入十六進(jìn)制,之后另存為zip文件。現(xiàn)在,就可以解壓獲得視頻文件了。

視頻當(dāng)然不會(huì)受影響,可以正常播放:

這種方法比使用壓縮包修復(fù)更靈活,也更有啟發(fā)性。的確,如果只是想從圖種中獲取幾個(gè)壓縮包,那么使用有修復(fù)功能的解壓軟件是最簡(jiǎn)單的;但是,使用編碼方式,你可以修改其中一部分字段,實(shí)現(xiàn)更多的隱藏信息。比如修改壓縮包本身的內(nèi)容,則使用修復(fù)也不會(huì)獲得正確文件。
此外,你還可以嘗試直接把其他文件(jpg、png、txt等)用開(kāi)頭的命令語(yǔ)句復(fù)制到圖片載體(當(dāng)然也可以用其他文件作載體),那無(wú)論怎么用解壓軟件修復(fù),也得不到正確的隱藏文件——因?yàn)閳D種里根本不包含壓縮包。而這時(shí),就可以將文件轉(zhuǎn)為十六進(jìn)制進(jìn)行分析。對(duì)于類似zip的、有特定格式的文件,要查找和提取還是比較容易的;而即使是對(duì)于那些格式未知的文件,花些心思進(jìn)行分析,能得到的信息也總比用解壓軟件得到的多。
再舉個(gè)簡(jiǎn)單的例子好了。

直接使用命令,將mp4文件和WinCat圖片復(fù)制進(jìn)Drink.jpg。

解壓軟件理所當(dāng)然地打不開(kāi)(別試了,改后綴也不行):

但是仍然可以用010打開(kāi):

同樣地,常見(jiàn)的mp4頭部為00 00 00 18 66 74 79 70。直接搜索:

定位并導(dǎo)出為十六進(jìn)制文本,之后再次另存為mp4格式的文件:

得到完整的視頻文件。
對(duì)這方面內(nèi)容感興趣的話,可以在網(wǎng)上查詢相關(guān)資料,并嘗試參加一些CTF。這篇教程就寫(xiě)到這里。

PS. 兩個(gè)與常用類型文件的頭部有關(guān)的網(wǎng)址:
http://www.nicetool.net/app/file_signature.html
https://blog.csdn.net/qq_41079177/article/details/79221638