還在用馬賽克的方式隱藏密碼喳挑?小心被「看穿」。
像素化(又稱馬賽克)是一種常見的打碼方式滔悉,通過降低圖像中部分區(qū)域的分辨率來隱藏某些關(guān)鍵信息伊诵,比如:
再比如:
看圖找馬賽克!(找不到請看右側(cè)原圖)
但是回官,在你想隱藏信息的同時曹宴,有一些技術(shù)卻反其道而行之,試圖將圖片還原為原始狀態(tài)歉提。
最近笛坦,一個名為 Depix 的 GitHub 項目爆火,上線三天 star 量已經(jīng)高達(dá) 6.9k苔巨。項目作者 Sipke Mellema 是一名信息安全顧問版扩。
項目地址:https://github.com/beurtschipper/Depix
很多人學(xué)習(xí)python,不知道從何學(xué)起侄泽。
很多人學(xué)習(xí)python资厉,掌握了基本語法過后,不知道在哪里尋找案例上手蔬顾。
很多已經(jīng)做案例的人宴偿,卻不知道如何去學(xué)習(xí)更加高深的知識。
那么針對這三類人诀豁,我給大家提供一個好的學(xué)習(xí)平臺窄刘,免費領(lǐng)取視頻教程,電子書籍舷胜,以及課程的源代碼逞怨!
Depix 能夠從像素化圖像截圖中恢復(fù)原圖中包含的文字密碼。該項目適用于使用線性方框濾波器(linear box filter)創(chuàng)建的像素化圖像辱魁。如下圖所示喧枷,項目作者給出了像素化圖像、恢復(fù)之后的效果和原圖的對比結(jié)果:
馬賽克打得夠嚴(yán)實了沮焕,不過 Depix 還是基本解讀出了被隱藏的信息吨岭。
如何使用?
使用 Depix 從像素化圖像截圖中恢復(fù)文字密碼峦树,操作也比較簡單:
從截圖中分割出矩形像素化 block辣辫;
在具有相同字體設(shè)置(包括文本大小旦事、字體、顏色急灭、hsl)的編輯器中姐浮,粘貼待處理字符的德布魯因(De Bruijn sequence)。
給該序列截圖葬馋,盡可能使用和像素化圖像相同的截圖工具卖鲤。
執(zhí)行命令:
pythondepix.py-p[pixelated?rectangle?image]-s[search?sequence?image]-ooutput.png
Depix 算法利用線性方框濾波器單獨處理每一個 block 這一事實。它對搜索圖像中的每一個 block 執(zhí)行像素化以尋找直接匹配畴嘶。
對于大部分像素化圖像扫尖,Depix 盡量尋找單匹配結(jié)果,并假設(shè)這些匹配是正確的掠廓。至于周圍多匹配 block 的結(jié)果被看作像素化圖像中相同的幾何距離换怖,并認(rèn)為這些匹配也是正確的。該過程重復(fù)多次蟀瞧。
在正確的 block 沒有更多幾何匹配后沉颂,Depix 將直接輸出所有正確的 block。對于多匹配 block悦污,Depix 將輸出所有匹配的平均值铸屉。
Depix 背后的算法
像素化常使用線性方框濾波器實現(xiàn)。線性方框濾波器的實現(xiàn)很簡單切端,速度很快彻坛,可以并行處理多個 block。
由于線性方框濾波器是一種確定性算法踏枣,對同樣的值執(zhí)行像素化通常會產(chǎn)生同樣的像素化 block昌屉。使用同樣位置的 block 對相同文本執(zhí)行像素化,會得到同樣的 block 值茵瀑。我們可以嘗試像素化文本來找出匹配的模式间驮。幸運的是,這對于秘密值的一部分同樣奏效马昨。我們可以把每個 block 或 block 組合看作一個子問題竞帽。
項目作者沒有選擇創(chuàng)建潛在字體的查找表。該算法要求在相同背景上具備相同的文本大小和顏色『枧酰現(xiàn)代文本編輯器還會添加色調(diào)屹篓、飽和度和亮度,也就是說存在海量潛在字體匙奴。
項目作者給出的解決方案也很簡單:使用待處理字符的德布魯因序列堆巧,將其粘貼到相同的編輯器中,然后截圖。該截圖可以用作相似 block 的查找圖像恳邀,例如:
德布魯因序列包括待處理字符的所有雙字符組合懦冰。這很重要灶轰,因為一些 block 會重疊兩個字符谣沸。找出恰當(dāng)?shù)钠ヅ湫枰阉鲌D像中具備相同像素配置的 block。
在以下測試圖像中笋颤,Depix 算法無法找到「o」的一部分乳附。這是因為在搜索圖像中,搜索 block 還包含下一個字母(「d」)的一部分伴澄,但在原始圖像中這里有個空格赋除。
創(chuàng)建字母的德布魯因序列時加上空格顯然會帶來同樣的問題:算法無法找到后續(xù)字母的恰當(dāng) block。有空格又有字母的圖像需要更長的搜索時間非凌,但結(jié)果也更好举农。
對于大部分像素化圖像而言,Depix 似乎能夠找到 block 的單匹配結(jié)果敞嗡,并假設(shè)這是正確的颁糟。然后將其周圍多匹配 block 的匹配結(jié)果看作在像素化圖像中處于相同的幾何距離,并假設(shè)這些匹配也是正確的喉悴。
在正確的 block 沒有更多幾何匹配后棱貌,Depix 直接輸出所有正確的 block。對于多匹配 block箕肃,Depix 將輸出所有匹配的平均值婚脱。雖然 Depix 的輸出并不完美,但已經(jīng)算不錯了勺像。
下圖展示了包含隨機(jī)字符的測試圖像的去像素化結(jié)果障贸,大部分字符被正確讀取:
對這個項目感興趣的讀者吟宦,可以自行嘗試惹想。
以后截圖時給敏感信息打碼,看來不能簡單地用「馬賽克了」督函。