这是「进击的Coder」的第 478 篇技术分享

来源:机器之心

阅读本文大概需要 5 分钟。

像素化(又称马赛克)是一种常见的打码方式,通过降低图像中部分区域的分辨率来隐藏某些关键信息,比如:

但是,在你想隐藏信息的同时,有一些技术却反其道而行之,试图将图片还原为原始状态。

此前,一个名为 Depix 的 GitHub 项目爆火,上线三天 star 量已经高达 6.9k。项目作者 Sipke Mellema 是一名信息安全顾问。

项目地址:https://github.com/beurtschipper/Depix

Depix 能够从像素化图像截图中恢复原图中包含的文字密码。该项目适用于使用线性方框滤波器(linear box filter)创建的像素化图像。如下图所示,项目作者给出了像素化图像、恢复之后的效果和原图的对比结果:

马赛克打得够严实了,不过 Depix 还是基本解读出了被隐藏的信息。

如何使用

使用 Depix 从像素化图像截图中恢复文字密码,操作也比较简单:

  • 从截图中分割出矩形像素化 block;

  • 在具有相同字体设置(包括文本大小、字体、颜色、hsl)的编辑器中,粘贴待处理字符的德布鲁因(De Bruijn sequence)。

  • 给该序列截图,尽可能使用和像素化图像相同的截图工具。

  • 执行命令:

python depix.py -p [pixelated rectangle image] -s [search sequence image] -o output.png

Depix 算法利用线性方框滤波器单独处理每一个 block 这一事实。它对搜索图像中的每一个 block 执行像素化以寻找直接匹配。

对于大部分像素化图像,Depix 尽量寻找单匹配结果,并假设这些匹配是正确的。至于周围多匹配 block 的结果被看作像素化图像中相同的几何距离,并认为这些匹配也是正确的。该过程重复多次。

在正确的 block 没有更多几何匹配后,Depix 将直接输出所有正确的 block。对于多匹配 block,Depix 将输出所有匹配的平均值。

Depix 背后的算法

像素化常使用线性方框滤波器实现。线性方框滤波器的实现很简单,速度很快,可以并行处理多个 block。

由于线性方框滤波器是一种确定性算法,对同样的值执行像素化通常会产生同样的像素化 block。使用同样位置的 block 对相同文本执行像素化,会得到同样的 block 值。我们可以尝试像素化文本来找出匹配的模式。幸运的是,这对于秘密值的一部分同样奏效。我们可以把每个 block 或 block 组合看作一个子问题。

项目作者没有选择创建潜在字体的查找表。该算法要求在相同背景上具备相同的文本大小和颜色。现代文本编辑器还会添加色调、饱和度和亮度,也就是说存在海量潜在字体。

项目作者给出的解决方案也很简单:使用待处理字符的德布鲁因序列,将其粘贴到相同的编辑器中,然后截图。该截图可以用作相似 block 的查找图像,例如:

德布鲁因序列包括待处理字符的所有双字符组合。这很重要,因为一些 block 会重叠两个字符。找出恰当的匹配需要搜索图像中具备相同像素配置的 block。

在以下测试图像中,Depix 算法无法找到「o」的一部分。这是因为在搜索图像中,搜索 block 还包含下一个字母(「d」)的一部分,但在原始图像中这里有个空格。

创建字母的德布鲁因序列时加上空格显然会带来同样的问题:算法无法找到后续字母的恰当 block。有空格又有字母的图像需要更长的搜索时间,但结果也更好。

对于大部分像素化图像而言,Depix 似乎能够找到 block 的单匹配结果,并假设这是正确的。然后将其周围多匹配 block 的匹配结果看作在像素化图像中处于相同的几何距离,并假设这些匹配也是正确的。

在正确的 block 没有更多几何匹配后,Depix 直接输出所有正确的 block。对于多匹配 block,Depix 将输出所有匹配的平均值。虽然 Depix 的输出并不完美,但已经算不错了。

下图展示了包含随机字符的测试图像的去像素化结果,大部分字符被正确读取:

对这个项目感兴趣的读者,可以自行尝试。

以后截图时给敏感信息打码,看来不能简单地用「马赛克了」。

参考链接:

https://github.com/beurtschipper/Depix

https://www.linkedin.com/pulse/recovering-passwords-from-pixelized-screenshots-sipke-mellema/?trackingId=yYFSUnuxRXasNV%2Fh3ZsiSw%3D%3D

End

「进击的Coder」专属学习群已正式成立,搜索「CQCcqc4」添加崔庆才的个人微信或者扫描下方二维码拉您入群交流学习。

看完记得关注@进击的Coder

及时收看更多好文

↓↓↓

崔庆才的「进击的Coder」知识星球已正式成立,感兴趣的可以查看《我创办了一个知识星球》了解更多内容,欢迎您的加入:

好文和朋友一起看~

密码打马赛克已经不安全了!这款开源的去 “马赛克” 工具一秒还原相关推荐

  1. 密码打马赛克已经不安全了!这款开源的去“马赛克”工具一秒还原

    如果你认为将密码或其他私密文本数据像素化就能保护它们不被窥见,那你真是太天真了,你的信息并没有你想象的那么安全.像素化(也称为马赛克)是一种常用的手段,可以大幅降低图像敏感区域的分辨率来隐藏信息. 近 ...

  2. 密码打马赛克已经不安全了!这款开源的去“马赛克“工具一秒还原

    开源最前线(ID:OpenSourceTop) 猿妹整编 链接:https://www.linkedin.com/pulse/recovering-passwords-from-pixelized-s ...

  3. 再厚的马赛克都能被扒干净?这款开源「去码」神器火了

    ↑↑↑关注后"星标"简说Python 人人都可以简单入门Python.爬虫.数据分析 简说Python推荐来源:扩展迷EXTFANSOne old watch, like brie ...

  4. 密码打码就安全了吗?这款星标 20K 的去 『马赛克』 开源神器,用 AI 一秒还原高清原图!...

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 像素化(又称马赛克)是一种常见的打码方式,通过降低图像中部分区域的分辨率来隐藏某些关键信息,比如: 但是,在你想隐 ...

  5. GitHub爆款项目,去马赛克软件Depix使用

    前段时间有一个叫做Depix的项目很火,刚考完试才有时间来看看效果.其实前段时间看文章就知道它的局限性还是很大,只适用于很严苛的很少的一类情况,而且只能识别英文单词,对于汉语就爱莫能助了. 文章目录 ...

  6. Depix 这款去“马赛克“工具效果如何?

    最近突然冒出一则新闻,说出了一款开源去"马赛克"工具,三天获 Github 5000星,火爆网络!这款工具就是depix. 出于好奇,去github下载了,文件很小,压缩包才580 ...

  7. 心中无码,自然高清 | 联合去马赛克与超分辨率研究论文Pytorch复现

    作者 | 知凡,个人公众号:林木蔚然读书会(ID:EspressoOcean),知乎ID:Uno Whoiam 本文授权转载自知乎 本文结构 简单扫盲 什么是去马赛克 什么是超分辨率 <Deep ...

  8. 图像去马赛克:双线性插值VS高质量线性插值

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达推荐阅读 42个pycharm使用技巧,瞬间从黑铁变王者Google ...

  9. qt 获取本机的wifi密码_还在记密码?这款开源免费的账号密码管理神器赶紧收了...

    工作中涉及到得账号密码,你是怎么记录得?如果是文档word或者excel记录,那么回非常麻烦,每次还得打开.如果是浏览器自己记录,如果更新密码,又记不得.尴尬! 今天大卫给大家推荐一款开源免费得账号密 ...

最新文章

  1. 如果服务器开机显示NObootable,电脑不能开机提示No bootable device怎么办?
  2. 04 Django之模板系统
  3. C# 中使用 ThoughtWorks.QRCode.dll 生成指定尺寸和边框宽度的二维码
  4. 类属性-使用对象名+类属性赋值语句会创建实例属性
  5. c# streamReader转XmlDocument读取节点
  6. 【Android基础】Fragment 详解之Fragment介绍
  7. 2020中国奢侈品消费者数字行为洞察报告
  8. 开源 免费 java CMS - FreeCMS1.5-数据对象-job
  9. B - Frogger(最短路之多条最短路径中最大权值的最小值)
  10. css不定高度实现垂直居中
  11. eclipse搭建简单的web服务,使用tomcat服务
  12. 面色红润从滋补五脏开始
  13. 【C语言程序】鸡兔同笼问题
  14. 判断邮箱正确的c语言代码,如何用c语言来识别电子邮箱是否正确
  15. 怎么在服务器解压文件,云服务器怎么解压文件
  16. 11届蓝桥杯青少年组C++全国赛高级组
  17. 师徒结对活动记录表计算机,师徒结对活动记录表一.doc
  18. win10命令提示符怎么打开_win10运行在哪里,win10怎么打开运行
  19. 国自然php代码,2020国自然单细胞项目申请——你的学科代码申请对了吗? | 单细胞专题之国基金...
  20. python界面教学视频_tkinter 窗口可视化你的 Python程序GUI教学

热门文章

  1. mfc设置半透明对话框
  2. 用java实现一个汽车租赁系统
  3. DirectPlay的基本概念
  4. Horizon 队列管理工具常用命令
  5. 基于JAVA校园疫情防控系统(Springboot框架) 开题报告
  6. 人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[3]——邯郸学步
  7. ccs dat数据 matlab,详解CCS中的.dat文件
  8. 使用axis发送xml报文,返回并解析报文实例
  9. 在使用DingDing内网穿透时遇到的坑
  10. windows环境下msi方式安装Mysql