天天看點

windows中copy /B 實作檔案裡藏檔案(檔案隐寫的實作)

0x01. 問題背景

最近研究圖檔的圖檔數字水印技術,發現很簡單的兩個檔案合并成一個檔案功能,然而還不影響原始檔案的内容,我們将其稱為圖檔檔案的隐寫。當然,小秘密或者私人檔案需要隐藏但是又逃不過别人的多層“掃描”,那也可以通過簡單的幾行指令實作隐藏。一起來試試吧~~~

0x02. 指令說明

copy 是一個基礎的DOS指令,也許在今天已經很少有人使用,但它仍然很實用。我們先看看文檔說明,如圖:

windows中copy /B 實作檔案裡藏檔案(檔案隐寫的實作)

于是,我們基本的指令格式如下:

copy /B 檔案名1+檔案名2 合并後的檔案名      

0x03. 玩轉copy

0x03_1. 素材準備

如圖,一張res.jpg圖檔,一個要被隐藏的secret.py檔案。

windows中copy /B 實作檔案裡藏檔案(檔案隐寫的實作)

0x03_2. 把檔案藏進圖檔裡

打開cmd指令框, 一定處于目前檔案目錄下,使用如下指令:

copy /B res.jpg+secret.py out.jpg      

如圖:

windows中copy /B 實作檔案裡藏檔案(檔案隐寫的實作)

表示成功,我們對比一下,左圖res.jpg是原圖,out.jpg是生成圖。

windows中copy /B 實作檔案裡藏檔案(檔案隐寫的實作)

是不是看不出什麼差别!​

​再也不擔心我的種子被兄弟們要走啦~~~​

​ 我們細心求證,真的隐藏了嘛?再看看細節:

windows中copy /B 實作檔案裡藏檔案(檔案隐寫的實作)

out藏入的資訊後,内容确實變大了!

0x03_3. 此處有坑

什麼坑?那就是如何還原的坑,如果沒有專業的工具,我們還是将要隐藏的secret.py轉換成zip檔案,一方面能再次減小合并後的檔案大小,另一方面恢複隐藏内容隻需要手動提取即可。是以,我們合并時候指令改變如下:

copy /B res.jpg+secret.zip out.jpg      

産生同樣的結果,但是我們對比一下檔案屬性,如圖:

windows中copy /B 實作檔案裡藏檔案(檔案隐寫的實作)

右邊輸出的out.jpg檔案大小是不是變小了~~~

0x04. 檔案恢複

我們如何将隐藏的檔案恢複呢?很簡單,隻需要将​

​out.jpg​

​​改成​

​out.zip​

​,如圖:

windows中copy /B 實作檔案裡藏檔案(檔案隐寫的實作)

直接解壓即可得到被隐藏的檔案secret.py.

0x05. 探索原理

我們将合并後的檔案,使用winhex打開,如圖:

windows中copy /B 實作檔案裡藏檔案(檔案隐寫的實作)

發現原始檔案的前面部分一點不變化,我們拖到最後面,查找十六進制FFD9,它是jpg檔案的結束辨別,如圖:

windows中copy /B 實作檔案裡藏檔案(檔案隐寫的實作)

那後面的一堆内容是什麼呢,我們将其複制出來,建立新的檔案,發現是一個名為secret.zip的檔案,裡面包含secret.py。

那麼很容易解釋原理了,​

​copy /B​

​指令其實就是将兩個檔案的二進制結合即可,形成了一個新的二進制檔案,但是window環境下,jpg檔案隻識别到檔案末尾的FFD9辨別符後即不再往後識别展示。是以後面添加什麼隻要不是FFD9,都是可以正常解析出來看到。

0x06. 寫在最後

如果覺得寫的不錯,麻煩給個關注吧!

繼續閱讀