【CTF】圖片隱寫術 · 修復被修改尺寸的PNG圖片 | 您所在的位置:網(wǎng)站首頁 › 屬羊的名字大全 › 【CTF】圖片隱寫術 · 修復被修改尺寸的PNG圖片 |
今天我們想來介紹一下關于圖片隱寫相關處理,以及修復被修改尺寸的PNG圖片。 關于PNG圖片的相關處理,是CTF Misc圖片隱寫術中極為基礎的一項作,筆者這里是想要提一些做題過程中發(fā)現(xiàn)的小技巧。 ?CTF圖片處理基本套路 各種圖片類型比較常見有PNG圖片,JPG圖片,GIF圖片。 其中GIF圖片通常涉及逐幀分離,后續(xù)作等等。JPG、PNG圖片通常修改圖片尺寸,圖片隱寫術等等。后續(xù)我們要重點提的就是修復被修改尺寸的PNG圖片。 檢查詳細信息很多時候重要信息就隱藏在圖片的詳細信息內(nèi),有可能是后續(xù)解題步驟所需信息或者Hint,例如可能是后續(xù)隱寫壓縮文件的解壓密碼等等,所以睜大眼睛仔細看哦。 十六進制編輯器處理萬物皆文件,都可以用十六進制編輯器打開,這里筆者常用的十六進制編輯器是“010 Editor”,當然其他十六進制編輯器例如“WinHex”也是可以的。十六進制編輯器打開后仔細檢查,可以ASCII搜索“flag”、“key”或者其他題目提示信息。 kali分析文件kali中file命令、binwalk命令都可以用來分析文件 其中如下命令可以用來分離隱寫文件 binwalk -e filenameforemost命令也可以用來分離隱寫文件,有些binwalk無法分離的可以使用foremost命令嘗試。 foremost filename//反正筆者一般是binwalk分析文件,有隱寫就直接用foremost分離文件。 如下圖就分離出來隱寫的兩張圖片和一個zip壓縮包 當然其他還有zsteg工具、stegdetect工具、dd命令、手動分離等等。 神器 Stegsolvestegsolve真可謂神器,可以用來幀查看,切換顏色通道,處理LSB隱寫等等。 File Format:文件格式 Data Extract:數(shù)據(jù)提取(常用來處理LSB隱寫) Steregram Solve:立體試圖 可以左右控制偏移 Frame Browser:幀瀏覽器 Image Combiner:圖像合并(如果題目給出多張圖片,可以將兩張圖片進行XOR、OR、AND等作,有時候兩張圖片異或運算后神奇地出現(xiàn)了一個二維碼!) 這里給出一個stegsolve modifed version Github鏈接 https://github.com/Giotino/stegsolve //原版一般主流工具包中都有 網(wǎng)絡上也比較容易找到 腦洞大開CTF就是這樣,50%的實力和50%的靈感,許多時候靈感是非常重要的。 ?修復被修改尺寸的PNG圖片再次放上blog的頭圖
參考:https://www.cnblogs.com/lidabo/p/3701197.html CRC循環(huán)冗余檢測比較常用,筆者在計算機網(wǎng)絡中就有學到。 這里我們重點提一下文件頭之后的數(shù)據(jù)塊 就是說一張PNG圖片第17個字節(jié)起的8個字節(jié)就表示了圖片的寬度高度信息。 那么我們有什么方法可以判斷一張PNG圖片的尺寸被修改了呢? //筆者在寫blog的時候發(fā)現(xiàn)被修改尺寸的PNG圖片在Typora中無法預覽出圖片,而是以markdown鏈接的形式,這算是個新發(fā)現(xiàn)吧。 IrfanviewIrfanView是適用于Windows XP,Vista,7、8和10的快速,緊湊和創(chuàng)新的FREEWARE(非商業(yè)用途)圖形查看器。 這是筆者的默認圖片查看器,主要是因為啟動快,軟件體積小,支持保存格式多等等。筆者也是在做題過程中發(fā)現(xiàn),如果PNG圖片被修改,用Irfanview打開時會有報錯提示。 //win10的照片(系統(tǒng)自帶的照片查看器)打開被修改尺寸的圖片是不會有報錯提示的。 TweakPNG是用于檢查和修改PNG圖像文件的低級實用程序。它支持Windows XP及更高版本。為了充分利用它,您至少必須對PNG文件的內(nèi)部格式有所了解。有關PNG的信息,請參見 PNG主頁。 或者可訪問該地址下載軟件:http://entropymine.com/jason/tweakpng/ 當使用TweakPNg打開被修改尺寸或者是其他信息的PNG圖片時,會有提示。 提示CRC錯誤。 這里有兩種可能 1)圖片CRC被修改可以嘗試用十六進制編輯器打開圖片,修改CRC。 2)圖片尺寸被修改這時候就要用十六進制編輯器修改圖片尺寸了。 Python腳本計算正確的尺寸 import os import binascii import struct crcbp = open("xxx.png", "rb").read() #打開圖片 for i in range(2000): for j in range(2000): data = crcbp[12:16] + \ struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29] crc32 = binascii.crc32(data) & 0xffffffff if(crc32 == 0x38162a34): #圖片當前CRC print(i, j) print('hex:', hex(i), hex(j))這里的腳本是在一個非常火的CTF培訓課程中了解到的 //原腳本長寬限制0~1023 筆者這里將其修改為2000防止圖片尺寸過大沒有遍歷到 鏈接:https://www.bilibili.com/video/BV1Kt411j7r7 使用時修改腳本中的打開圖片名稱和圖片當前CRC 然后在圖片所在目錄運行Python腳本 (或者填上要計算的圖片的絕對路徑,運行Python腳本) 我們這里修改后的腳本如下 然后運行腳本可得正確尺寸 然后我們再用十六進制編輯器復原圖片尺寸 當當當!就復原PNG圖片啦! 順便也驗證了筆者之前的猜想,PNG圖片修改為原尺寸后Irfanview打開就不會報錯。 233圖是筆者自己P的 順便安利《德魯納酒店》、《我的大叔》真的好看!!(跑題了...) ?碎碎念當然這只是圖片隱寫術中很小的一個知識點,但是或許可以拿去逗逗同學(?) 實戰(zhàn)中一般筆者Irfanview打開如果有報錯提示(表明PNG圖片尺寸被修改),一般隨緣修改下尺寸就行了,一般不會用Python腳本去爆破原始尺寸,解題速度要緊。 ? ?轉載請注明出處本文作者:雙份濃縮馥芮白 原文鏈接:https://www.cnblogs.com/Flat-White/p/13515090.html 版權所有,如需轉載請注明出處。 |
今日新聞 |
推薦新聞 |
專題文章 |
CopyRight 2018-2019 實驗室設備網(wǎng) 版權所有 |