还在用马赛克的方式隐藏密码?小心被「看穿」。
First
日常的网络生活中,马赛克属于我们平时用得比较多的一项信息加密技术,通过数据模糊化来防止数据信息直接暴露在人的视野中。
近日Github上面出现了一个很火的AI项目,用Python语言编写的Depix
项目,在短短的8天时间里,该项目的star
量已达到了10.2k
。这是一个惊人的收藏速度,也可以看出这个项目所做的事情,行业内也都十分关注!
- 那么
Depix
这个项目具体做了些什么呢?
是的,通过前面的引言,你可能已经猜出来了,这个项目吸引人的地方就是逆向去除马赛克的能力!
Second
接下来我们来研究看看这个项目吧!
通过该项目README
中的Example,我们可以看出,我们需要运行这个项目需要3个参数。
- -p:pixel image,即指定的被打上了马赛克的图片的路径
- -s:search image,德布鲁因序列(De Bruijn sequence)的截图的路径
- -o:output image,生成后的图片的保存路径
其中Usage中解释了该项目的基本使用方法。
- 我们需要在一张文字图片中切割出马赛克区域,这一步可以用正常的截图剪切工具便可以轻易实现!
- 我们需要粘贴一张德布鲁因序列(De Bruijn sequence)截图,来作为图片像素识别比较算法比较对象的图片区域块。这张De Bruijn sequence截图中,是可以来作为识别算法所参考的字体设置的(包括文本大小、字体、字体颜色、hsl)。
- 执行命令:
python depix.py -p [pixelated rectangle image] -s [search sequence image] -o output.png
Third
至于Depix背后的算法,是利用线性方框滤波器单独处理每一个 block 这一事实。它对搜索图像中的每一个 block 执行像素化以寻找直接匹配。
对于大部分像素化图像,Depix 尽量寻找单匹配结果,并假设这些匹配是正确的。至于周围多匹配 block 的结果被看作像素化图像中相同的几何距离,并认为这些匹配也是正确的。该过程重复多次。
在正确的 block 没有更多几何匹配后,Depix 将直接输出所有正确的 block。对于多匹配 block,Depix 将输出所有匹配的平均值。
这要求我们对所要识别马赛克下的文字的各种特性,如文本大小、字体、字体颜色和hsl,都要有一个查找比较表,根据这个查找表,所得到的图片清晰度也会有所不同。
在下载该项目后,会发现,该项目的作者给出的解决方案也很简单:
首先copy一份所需要的De Bruijin sequence序列字符串到文本文件中
然后将该文本文件截图生成对应所需要的图片(因为算法用到了图片中各个字符的像素信息))
将该图片作为执行命令参数的-s参数中的参数路径
Fourth
我们来看看效果吧!
- 去马赛克前:
- 去马赛克后:
看!被马赛克打得严严实实的一段文字,在经过一定算力的运算下,所得到的破译的图片是如此的清晰!
显然地,这个项目还不是很成熟,所以对很多奇怪图案的识别还无能为力,同时,对破译马赛克所需要的计算机算力还是有一定要求的,小编运行后发现,这5个单词破译需要耗费2~5分钟。如果破译一篇文章的马赛克,那么对计算机的算力和内存还是有那么一些要求的,但并非做不到!
因此你对抗的方法有很多,比如可以多打一些马赛克,但别再指望你的密码打上马赛克后就能高枕无忧了!