雜項題的基本解題思路——文件操做與隱寫

一、文件操做與隱寫

文件類型識別

文件類型(圖片、壓縮包、流量包、word、Excel、ppt,PDF....)windows

怎麼知道是一張圖片:後綴名是.jpg  .png...編輯器

a、File命令

這邊說到的命令或者是工具,其實都是叫工具,說命令只是說這個工具沒有圖形化界面,但自己就是一個工具而已,這個工具是命令行的工具

Linux系統中使用該命令spa

命令格式:file 文件名插件

當文件沒有後綴名或者有後綴名可是沒法正常打開時,根據識別出的文件類型來修改後綴名便可正常打開文件。命令行

使用場景:不知道後綴名,沒法打開文件3d

格式:file myheart日誌

 

 

 

 工具是怎麼識別這個文件的類型呢?★★★blog

 

 去剪切這個文件頭,解析它,zip檢測到504B0304.是根據文件頭的字段來識別這個文件是什麼類型的圖片

 

 

b、winhex工具

使用winhex程序能夠查看文件的頭類型,根據文件頭類型能夠判斷出文件類型

使用場景:windows系統下經過文件頭信息判斷文件類型

hex:十六進制    winhex實際上是一個十六進制文件的編輯器

010editor(推薦)也是一個十六進制編輯器

notepad++  有一個hex插件,notepad++能夠高亮代碼,好用!

三個工具

 

一張圖片用notepad++打開是一串亂碼。有一個插件——》HEX-editor——》View in HEX查看它的十六進制

 

 

 

 

 

演示:用010editor打開:

 

 

 flag值可能寫在右邊的ASCII碼中

 

 

文件頭破壞了怎麼識別??

作一個修復 ↓

 

c、文件頭殘缺/錯誤

可能要用到的工具:010editor 16進制編輯器

文件頭部殘缺或者頭部字段錯誤沒法打開正常文件,針對這種狀況,使用winhex程序添加相應的文件頭,針對頭部字段錯誤,能夠找一個相同類型的文件進行替換

使用場景:文件頭部殘缺或者頭部字段錯誤沒法打開正常文件

格式:file 文件名

若是文件沒法打開,使用該命令解析,顯示data信息,則表示該文件頭部殘缺或者錯誤,此時就能夠用16進制編輯器在第一行補充正確的文件頭

會顯示這是一個data文件

 

 010editor 16進制編輯器去修復

 

 

文件分離操做

一張圖片可能包含多少信息呢?

圖片種子:下載一張圖片也就幾百kb,其實它蘊藏的信息有一兩個G

正常的隱寫就是:你看到的是一張圖片,它多是由好幾張圖片拼成的。甚至不僅是圖片,一張圖片裏面還有壓縮包,還有txt,還有PDF 還有其餘文件

        出題人把不少文件融合成一張圖片——》文件分離

a. binwalk工具

該工具是Linux下用來分析和分離文件的工具,能夠快速分辨文件是否有多個文件合併而成,並將文件分離。若是分離成功會在目標文件的目錄中生成一個形如_文件名_extracted的文件目錄,目錄中會有分離後的文件。

格式:

分析文件 :binwalk filename.後綴

 

分離文件:binwalk -e filename

 

 

 

 

 binwalk特色是遇到壓縮包會幫咱們自動解壓

key.txt就是咱們的flag

 

b. foremost

若是binwalk沒法分離出文件,能夠使用該工具,將目標文件複製到kali中,成功執行後會將分離後的文件保存在源文件的新文件夾中。

命令格式:foremost 文件名.後綴 -o 自定義保存分離文件的文件夾名     (用-o 把它輸出到一個目錄下o就是out)

會生成一個名稱爲123的文件夾

 

 foremost是一個比較中規中矩的一個分離軟件,不像binwalk(看到壓縮包會幫您解壓),

foremost不會,foremost會幫您分類,告訴你哪一個文件夾是jpg,哪一個文件夾是zip,會幫你分類。甚至分離完還會給你寫一個日誌文件

 

c. dd(半自動化分離文件工具)

當上面兩個工具分離出錯或者沒法自動分離時,就須要dd來手動實現分離

 

 

命令格式:

dd if=源文件 of=目標文件名 bs= count= skip= 開始分離的字節

dd if=源文件 of=輸出文件   bs=5(我要取前面五個字符,塊就爲5 )  count=1(去1塊) skip= 開始分離的字節

參數說明;

if = file  輸入文件名 缺省爲標準輸入

of = 分離後的文件名       分離後的文件名

bs=i 將文件分爲多個塊,一個塊的大小爲字節爲i(bs=bytes)

count=j 從頭開始取j塊

skip-k

命令表示:截取源文件,開始字段爲i X k,截取字段的長度爲i X j  當skip省略時,截取從0開始,截取字段的長度爲i X j

 

skip=blocks  從輸入文件開頭跳過blocks個塊後再開始複製

 

 

 

 

實例:

用16進制編輯器打開圖片,怎麼定位到地址呢?

 

 怎麼找到0x596F?

 

 

 

 

 

d. winhex

除了用dd外,還能夠使用過winhex實現手動分離,將目標文件拖入winhex中,找到要分離的部分,點擊複製便可

使用場景:windows下利用winhex程序對文件進行手動分離

例如:新建一個文件,文件大小1byte,在文件開頭位置點擊粘貼,彈出提示框選否,肯定,將文件保存爲想要的後綴便可。

 

 

e. 010deitor(推薦)

用法1:選擇須要分離的文件在源文件中的內容,按圖中所示選擇選項便可分離出源文件包含的文件。

將某塊區域文件保存的方式以下:

一、010Editor打開文件——》選中右鍵——》selection——》Save Selection

 

用法2:將16進制的文件導入,而後另存爲對應的文件類型

 

 

 

文件合併操做

(題目給出多個文件,咱們須要將這些文件按順序合併,校驗md5等肯定是否合併正確,通常在打開合併的文件後就能夠獲得flag)

a. Linux下的文件合併

使用場景:Linux下一般對文件名相似的文件進行批量合併

命令格式:cat 合併的文件1 合併的文件2  … >合併後輸出的文件名

完整性檢測(計算文件的md5等等):md5sum 文件名

 

 

b. windows下的文件合併

使用場景:Windows下,一般要對文件名相似的文件進行批量合併

格式:copy /B 合併的文件1+合併的文件2+… 輸出的文件名

 

 

完整性檢測(計算文件的md5等等) certutil -hashfile 文件名 md5

 

 

文件內容的隱寫

 

 

題目給一個或多個文件,咱們須要用工具打開,例如notpad++,而後使用查找功能搜索fiag或者key等關鍵字,以獲得題目線索。

文件可能還須要使用16進制編輯器打開,而後再進行查找等操做

相關文章
相關標籤/搜索