下次发截图的时候再打码,就别用马赛克了

admin 2022年2月19日03:46:45评论301 views字数 2088阅读6分57秒阅读模式

互联网离不开八卦八卦离不开打码。每个网友的手机里多少都躺着几个活跃的群,流传着不同的聊天截图和消息。为了不被揪出源头或者多少保护一点隐私,截图通常都顺手打了马赛克。然而,资深的PWN友都知道,从来都没有100%的安全。不论是照片还是文字,打完码(像素化处理)后都有可能被还原……


最近,安全公司Bishop Fox 的首席研究员 Dan Petro公开了一项研究成果,用自己写的工具可以将打了马赛克的文字还原。他录制了一段视频,将研究过程清楚展现了出来。



至于为什么想到做这个工具,事情还要从2020年底说起。当时,信息安全顾问 Sipke Mellema 公开了能够去除马赛克、还原文字的 Depix项目,成功吸引了学术界和业界的关注。利用线性方框滤波器(linear box filter)单独处理像素框实现覆盖的原理,Depix 可以对搜索图像中的每一个 block 进行像素化操作,寻找直接的字母匹配,做到基本还原文字信息。


下次发截图的时候再打码,就别用马赛克了


不过从结果来看,Depix 还不够完美,还原出的文字有模糊或缺失,在实际应用中,可能会出现偏差。所以这个项目公开之后,遇到了一些质疑。来自 Jumpsec Lab 的一位研究员就此发布挑战,将一串字符打码,看看究竟谁能有办法正确还原。


下次发截图的时候再打码,就别用马赛克了


酷爱研究的技术研究人员们自然是有战必应。所以,Dan Petro 积极参与了挑战,清楚地恢复了这些字母,而且在联系到出题者之后,也获得了肯定的回复。


下次发截图的时候再打码,就别用马赛克了

下次发截图的时候再打码,就别用马赛克了


如何做到的?





Dan Petro 沿用了 Depix 的理论思路,开发出一款叫做Unredacter 的工具, 只需要安装并启动,就能自动将文本还原。


下次发截图的时候再打码,就别用马赛克了


下次发截图的时候再打码,就别用马赛克了


要实现这样的效果,先要理清楚马赛克的原理。给图片打马赛克本质上是将图像划分为固定大小的网格块,再用同一区域原始图像的平均色值填充网格块。通过这种方式,可以把原始图像信息涂抹掉。正是因为这种方式简单、“有效”,所以在很多编辑器中都有应用,且效果相同,成为人们信手拈来的神器。


下次发截图的时候再打码,就别用马赛克了
下次发截图的时候再打码,就别用马赛克了

基于这个原理,在知道被打码图片的内容是文本以及文本的字体与字号这些前提下,就可以进行还原操作。而这在现实中也是合理的,因为我们在看到一些截图的时候,打码的内容往往是一部分信息,所以可以通过其他未打码的内容去推测出文本的字体、字号。


另一个需要注意的是,被还原的内容是在本地完成打码过程。从密码学的角度来解释,就是这些信息还没有扩散(diffusion)。因此,如果原始图片中某个像素有所变化,也只会影响到这个像素所对应的色块,对整体影响不大。所以,可以对字符进行循环深度优先搜索,推测字母内容,再根据与编辑文本的边缘匹配程度确定字母。简单来说码就是猜到一个字母a,就拿a打码之后的图片与原来打码后的字母对照,查看匹配度。不过这个过程也需要解决一些难题。


  • 字母溢出

    字符不会与色块一一对齐,有时候两个字母的一部分会存在于同一个色块里。随意会导致一些错误。在这种情况下,就要调整算法,让它把色块切断,只保留一边。


    下次发截图的时候再打码,就别用马赛克了


  • 空格

    如果字母前后有空格,再加上问题1的影响,也会导致算法枚举、匹配的结果出错。这个时候,依旧需要对相对空白的色块进行特殊分割,并调低阈值。


    下次发截图的时候再打码,就别用马赛克了


  • 字母宽度

    不同字母宽度不同,占用的空间不一样,而有些排版方式会让不同的字母等宽。在等宽的情况下,猜测的难度会增大。而如果字母以原始宽度呈现,就会更容易根据形状去匹配正确的字母。


    下次发截图的时候再打码,就别用马赛克了


  • 字体呈现效果

    对于完全相同的字体,在不同的编辑器里呈现的图像也会略有不同。下图就是例子,上一行是来自GiMP,下一行来自FireFox:


    下次发截图的时候再打码,就别用马赛克了


    可以看到,长度 (shang yi hang chang yi dian)、和文本的光栅化方式(下一行粗一点)不太一样。这也会对还原结果造成影响。


  • 像素偏移

    在文本打码时,会有X轴和Y轴的标准去衡量偏移度。在大多数编辑器中,打码的人随手从一个点开始涂抹,最终出现的打码色块完全不同。Unredacter 也设置了偏移量测试,进行多重猜测与匹配。


    下次发截图的时候再打码,就别用马赛克了


解决了这些问题之后,再去完成挑战题目,就有的放矢了。挑战题目原本如下图,仔细一看还有色彩,这是屏幕上呈现文本的光栅化过程产生的。


下次发截图的时候再打码,就别用马赛克了


为了方便工具处理,要把这张图先转换成黑白色,把一些暗部调亮,最后进行处理。


下次发截图的时候再打码,就别用马赛克了


Unredacter 只运行了几分钟就给出了正确答案。不过,为了让挑战继续,这个最终的答案还不能公开。


好消息是,目前这个工具理论上似乎还无法处理汉字文本,不过,也许哪位读者看到了 GitHub 代码,就能改良出一个针对汉字的工具。所以,Dan Petro 的建议是,以后都不要再用马赛克打码了,直接用画笔涂抹,用大块的色块(黑条、白条等)把内容覆盖掉,这样会保险一点。或者你也可以像PWN君一样,先糊一层马赛克,再画笔抹一遍,最后再叠放一层表情包……


下次发截图的时候再打码,就别用马赛克了


*参考来源:

https://bishopfox.com/blog/unredacter-tool-never-pixelation

https://github.com/bishopfox/unredacter


如果你还想看其他去除马赛克的项目,可以点击下图,或者观看我们往期的科普讲解。


下次发截图的时候再打码,就别用马赛克了

分享收藏点赞在看

原文始发于微信公众号(GeekPwn):下次发截图的时候再打码,就别用马赛克了

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月19日03:46:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   下次发截图的时候再打码,就别用马赛克了https://cn-sec.com/archives/792916.html

发表评论

匿名网友 填写信息