點擊藍(lán)色“Python交流圈”關(guān)注我丫
加個“星標(biāo)”,每天一起進(jìn)步一點點

像素化(又稱馬賽克)是一種常見的打碼方式,通過降低圖像中部分區(qū)域的分辨率來隱藏某些關(guān)鍵信息,比如:

但是,在你想隱藏信息的同時,有一些技術(shù)卻反其道而行之,試圖將圖片還原為原始狀態(tài)。最近,一個名為 Depix 的 GitHub 項目爆火,上線三天 star 量已經(jīng)高達(dá) 6.9k。項目作者 Sipke Mellema 是一名信息安全顧問。

項目地址:https://github.com/beurtschipper/DepixDepix 能夠從像素化圖像截圖中恢復(fù)原圖中包含的文字密碼。該項目適用于使用線性方框濾波器(linear box filter)創(chuàng)建的像素化圖像。如下圖所示,項目作者給出了像素化圖像、恢復(fù)之后的效果和原圖的對比結(jié)果:

馬賽克打得夠嚴(yán)實了,不過 Depix 還是基本解讀出了被隱藏的信息。使用 Depix 從像素化圖像截圖中恢復(fù)文字密碼,操作也比較簡單:
python depix.py -p [pixelated rectangle image] -s [search sequence image] -o output.png
Depix 算法利用線性方框濾波器單獨處理每一個 block 這一事實。它對搜索圖像中的每一個 block 執(zhí)行像素化以尋找直接匹配。對于大部分像素化圖像,Depix 盡量尋找單匹配結(jié)果,并假設(shè)這些匹配是正確的。至于周圍多匹配 block 的結(jié)果被看作像素化圖像中相同的幾何距離,并認(rèn)為這些匹配也是正確的。該過程重復(fù)多次。在正確的 block 沒有更多幾何匹配后,Depix 將直接輸出所有正確的 block。對于多匹配 block,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)算不錯了。
下圖展示了包含隨機字符的測試圖像的去像素化結(jié)果,大部分字符被正確讀?。?/span>

對這個項目感興趣的讀者,可以自行嘗試。
以后截圖時給敏感信息打碼,看來不能簡單地用「馬賽克了」。
https://www.linkedin.com/pulse/recovering-passwords-from-pixelized-screenshots-sipke-mellema/?trackingId=yYFSUnuxRXasNV%2Fh3ZsiSw%3D%3D--End--
1、垃圾分類的正確姿勢?用 OpenCV 人工智能圖像識別技術(shù)來進(jìn)行
2、Python 游戲編程之實現(xiàn)飛機大戰(zhàn)(含源代碼)
3、用 Hypothesis 快速測試你的 Python 代碼
4、別這樣直接運行Python命令,否則電腦等于“裸奔”
5、太sao了吧!微信可以改彩色昵稱了?。?!
6、同步與異步 Python 有何不同?
7、厲害了!手?jǐn)]一個微信訂閱號鑒黃機器人!用起來很可以!
8、大廠的 404 頁面都長啥樣?看到最后一個,我笑了。。。
9、爬取QQ音樂全部歌曲
10、11 月全國程序員平均工資出爐,看你拉后退了沒
領(lǐng)取Python入門+進(jìn)階+實戰(zhàn)開發(fā)92天全套視頻教程

點贊最大的支持?