打馬賽克就安全了嗎?AI消除馬賽克,GitHub開(kāi)源項(xiàng)目上線三天收獲近7000星

還在用馬賽克的方式隱藏密碼?小心被「看穿」。


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



再比如:


看圖找馬賽克?。ㄕ也坏秸?qǐng)看右側(cè)原圖)


但是,在你想隱藏信息的同時(shí),有一些技術(shù)卻反其道而行之,試圖將圖片還原為原始狀態(tài)。


最近,一個(gè)名為 Depix 的 GitHub 項(xiàng)目爆火,上線三天 star 量已經(jīng)高達(dá) 6.9k。項(xiàng)目作者 Sipke Mellema 是一名信息安全顧問(wèn)。



項(xiàng)目地址:https://github.com/beurtschipper/Depix

很多人學(xué)習(xí)python,不知道從何學(xué)起。

很多人學(xué)習(xí)python,掌握了基本語(yǔ)法過(guò)后,不知道在哪里尋找案例上手。

很多已經(jīng)做案例的人,卻不知道如何去學(xué)習(xí)更加高深的知識(shí)。

那么針對(duì)這三類人,我給大家提供一個(gè)好的學(xué)習(xí)平臺(tái),免費(fèi)領(lǐng)取視頻教程,電子書(shū)籍,以及課程的源代碼!

python學(xué)習(xí)交流傳送】

Depix 能夠從像素化圖像截圖中恢復(fù)原圖中包含的文字密碼。該項(xiàng)目適用于使用線性方框?yàn)V波器(linear box filter)創(chuàng)建的像素化圖像。如下圖所示,項(xiàng)目作者給出了像素化圖像、恢復(fù)之后的效果和原圖的對(duì)比結(jié)果:



馬賽克打得夠嚴(yán)實(shí)了,不過(guò) Depix 還是基本解讀出了被隱藏的信息。


如何使用?


使用 Depix 從像素化圖像截圖中恢復(fù)文字密碼,操作也比較簡(jiǎn)單:


從截圖中分割出矩形像素化 block;

在具有相同字體設(shè)置(包括文本大小、字體、顏色、hsl)的編輯器中,粘貼待處理字符的德布魯因(De Bruijn sequence)。

給該序列截圖,盡可能使用和像素化圖像相同的截圖工具。

執(zhí)行命令:


pythondepix.py-p[pixelated?rectangle?image]-s[search?sequence?image]-ooutput.png

Depix 算法利用線性方框?yàn)V波器單獨(dú)處理每一個(gè) block 這一事實(shí)。它對(duì)搜索圖像中的每一個(gè) block 執(zhí)行像素化以尋找直接匹配。


對(duì)于大部分像素化圖像,Depix 盡量尋找單匹配結(jié)果,并假設(shè)這些匹配是正確的。至于周圍多匹配 block 的結(jié)果被看作像素化圖像中相同的幾何距離,并認(rèn)為這些匹配也是正確的。該過(guò)程重復(fù)多次。


在正確的 block 沒(méi)有更多幾何匹配后,Depix 將直接輸出所有正確的 block。對(duì)于多匹配 block,Depix 將輸出所有匹配的平均值。


Depix 背后的算法


像素化常使用線性方框?yàn)V波器實(shí)現(xiàn)。線性方框?yàn)V波器的實(shí)現(xiàn)很簡(jiǎn)單,速度很快,可以并行處理多個(gè) block。


由于線性方框?yàn)V波器是一種確定性算法,對(duì)同樣的值執(zhí)行像素化通常會(huì)產(chǎn)生同樣的像素化 block。使用同樣位置的 block 對(duì)相同文本執(zhí)行像素化,會(huì)得到同樣的 block 值。我們可以嘗試像素化文本來(lái)找出匹配的模式。幸運(yùn)的是,這對(duì)于秘密值的一部分同樣奏效。我們可以把每個(gè) block 或 block 組合看作一個(gè)子問(wèn)題。


項(xiàng)目作者沒(méi)有選擇創(chuàng)建潛在字體的查找表。該算法要求在相同背景上具備相同的文本大小和顏色。現(xiàn)代文本編輯器還會(huì)添加色調(diào)、飽和度和亮度,也就是說(shuō)存在海量潛在字體。


項(xiàng)目作者給出的解決方案也很簡(jiǎn)單:使用待處理字符的德布魯因序列,將其粘貼到相同的編輯器中,然后截圖。該截圖可以用作相似 block 的查找圖像,例如:



德布魯因序列包括待處理字符的所有雙字符組合。這很重要,因?yàn)橐恍?block 會(huì)重疊兩個(gè)字符。找出恰當(dāng)?shù)钠ヅ湫枰阉鲌D像中具備相同像素配置的 block。


在以下測(cè)試圖像中,Depix 算法無(wú)法找到「o」的一部分。這是因?yàn)樵谒阉鲌D像中,搜索 block 還包含下一個(gè)字母(「d」)的一部分,但在原始圖像中這里有個(gè)空格。



創(chuàng)建字母的德布魯因序列時(shí)加上空格顯然會(huì)帶來(lái)同樣的問(wèn)題:算法無(wú)法找到后續(xù)字母的恰當(dāng) block。有空格又有字母的圖像需要更長(zhǎng)的搜索時(shí)間,但結(jié)果也更好。


對(duì)于大部分像素化圖像而言,Depix 似乎能夠找到 block 的單匹配結(jié)果,并假設(shè)這是正確的。然后將其周圍多匹配 block 的匹配結(jié)果看作在像素化圖像中處于相同的幾何距離,并假設(shè)這些匹配也是正確的。


在正確的 block 沒(méi)有更多幾何匹配后,Depix 直接輸出所有正確的 block。對(duì)于多匹配 block,Depix 將輸出所有匹配的平均值。雖然 Depix 的輸出并不完美,但已經(jīng)算不錯(cuò)了。


下圖展示了包含隨機(jī)字符的測(cè)試圖像的去像素化結(jié)果,大部分字符被正確讀取:



對(duì)這個(gè)項(xiàng)目感興趣的讀者,可以自行嘗試。

以后截圖時(shí)給敏感信息打碼,看來(lái)不能簡(jiǎn)單地用「馬賽克了」。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容