0x01. 問題背景
最近研究圖檔的圖檔數字水印技術,發現很簡單的兩個檔案合并成一個檔案功能,然而還不影響原始檔案的内容,我們将其稱為圖檔檔案的隐寫。當然,小秘密或者私人檔案需要隐藏但是又逃不過别人的多層“掃描”,那也可以通過簡單的幾行指令實作隐藏。一起來試試吧~~~
0x02. 指令說明
copy 是一個基礎的DOS指令,也許在今天已經很少有人使用,但它仍然很實用。我們先看看文檔說明,如圖:
于是,我們基本的指令格式如下:
copy /B 檔案名1+檔案名2 合并後的檔案名
0x03. 玩轉copy
0x03_1. 素材準備
如圖,一張res.jpg圖檔,一個要被隐藏的secret.py檔案。
0x03_2. 把檔案藏進圖檔裡
打開cmd指令框, 一定處于目前檔案目錄下,使用如下指令:
copy /B res.jpg+secret.py out.jpg
如圖:
表示成功,我們對比一下,左圖res.jpg是原圖,out.jpg是生成圖。
是不是看不出什麼差别!
再也不擔心我的種子被兄弟們要走啦~~~
我們細心求證,真的隐藏了嘛?再看看細節:
out藏入的資訊後,内容确實變大了!
0x03_3. 此處有坑
什麼坑?那就是如何還原的坑,如果沒有專業的工具,我們還是将要隐藏的secret.py轉換成zip檔案,一方面能再次減小合并後的檔案大小,另一方面恢複隐藏内容隻需要手動提取即可。是以,我們合并時候指令改變如下:
copy /B res.jpg+secret.zip out.jpg
産生同樣的結果,但是我們對比一下檔案屬性,如圖:
右邊輸出的out.jpg檔案大小是不是變小了~~~
0x04. 檔案恢複
我們如何将隐藏的檔案恢複呢?很簡單,隻需要将
out.jpg
改成
out.zip
,如圖:
直接解壓即可得到被隐藏的檔案secret.py.
0x05. 探索原理
我們将合并後的檔案,使用winhex打開,如圖:
發現原始檔案的前面部分一點不變化,我們拖到最後面,查找十六進制FFD9,它是jpg檔案的結束辨別,如圖:
那後面的一堆内容是什麼呢,我們将其複制出來,建立新的檔案,發現是一個名為secret.zip的檔案,裡面包含secret.py。
那麼很容易解釋原理了,
copy /B
指令其實就是将兩個檔案的二進制結合即可,形成了一個新的二進制檔案,但是window環境下,jpg檔案隻識别到檔案末尾的FFD9辨別符後即不再往後識别展示。是以後面添加什麼隻要不是FFD9,都是可以正常解析出來看到。