机器之心报道

作者:魔王、小舟

还在用马赛克的方式隐藏密码?小心被「看穿」。

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

再比如:

看图找马赛克!(找不到请看右侧原图)

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

最近,一个名为 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://www.linkedin.com/pulse/recovering-passwords-from-pixelized-screenshots-sipke-mellema/?trackingId=yYFSUnuxRXasNV%2Fh3ZsiSw%3D%3D

我就知道你“在看”

java图片马赛克_朋友圈照片打上马赛克,就真的安全了吗?相关推荐

  1. 朋友圈照片打上马赛克,就真的安全了吗?

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 关注订阅号「程序员小乐」,收看更多精彩内容 每日英文 If someone ...

  2. 微信图片去除马赛克_朋友圈分享技巧 如何快速地截图打马赛克?

    原标题:朋友圈分享技巧 如何快速地截图打马赛克? 点评:不到1分钟就能搞定一张图,文字说明.马赛克.箭头标记全都有了. 手快的人就是注定要悲伤啊,一不小心发了一张图片到朋友圈里,结果图里"暗 ...

  3. html图片排列布局下面字_css实现朋友圈照片排列布局代码实例

    本篇文章小编给大家分享一下css实现朋友圈照片排列布局代码实例,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 首先可以打开朋友圈观察不同图片数量的几种布局 ...

  4. Auto.js实现自动删除朋友圈照片

    给大家分享一个自动化删除自己朋友圈照片的功能,仅供大家学习参考,请勿滥用! 基本实现思路: 1. 在最近发的带照片的第一条朋友圈查找右上角三个点的容器A: 2. 获取容器A的中心坐标: 3. 根据空器 ...

  5. 教你一招搞定微信朋友圈照片模糊不清

    我们在微信朋友圈发照片时会发现图片变模糊了,有一些齿边,不够清晰,这是因为微信默认启用了图片压缩功能,减小图片大小,节省流量.有强迫症的同学肯定会有不爽的赶脚,ytkah教你一招搞定微信朋友圈照片模糊 ...

  6. 朋友圈评论发html,微信评论怎么发图片(微信朋友圈评论可以发表情包啦)

    今天你的朋友圈被表情包淹没了没? 啊费一打开朋友圈 几乎全都在"索求"表情包 看到各种沙雕表情包,默默收集了一波哈哈哈 不止朋友圈,就连微博都上了热搜 一波表情包的热潮刷爆了网上 ...

  7. 苹果输入法怎么换行_朋友圈不折叠的N种方法安卓苹果通用

    点击蓝字 关注我们 [黑桃公会] 解析网络项目 提供独家资料 汇总最全干货 2020/03/30 ♠  今天,黑桃分享一下破解朋友圈折叠的方法!我们曾也分享过一个小技巧来防止朋友圈折叠,但是,微信升级 ...

  8. 获取朋友圈照片_朋友圈可以发 30 秒视频啦!用微视这个新功能就能办到

    对于许多热爱分享生活中所见所闻的朋友来说,在发朋友圈时可能都会有这样的感觉:只能分享 15 秒以内的视频,完全不够用啊. 如果你也有同样的困扰,今天,A 君就给你介绍一个实用新功能,让你能够在朋友圈中 ...

  9. 如何给对方邮箱发照片_朋友圈如何发心形拼图九宫格照片?

    导读:经常会看到朋友圈里别人秀恩爱的爱心九宫格照片,此篇文章教你如何不用ps也可以制作心形拼图! 找了很多制作心形拼图的app,但都不是我在朋友圈看到别人发的那种心形制作的图,阅尽千帆,终于让我找到这 ...

最新文章

  1. linux 定时任务
  2. PyQt5 技术篇-设置QComboBox下拉框默认值,获取下拉框当前选择的内容
  3. core-js@2 core-js@3报错问题
  4. CVE-2012-1876调试要点
  5. androidstudio学习总结_Android 开发工程师自述:2年的开发,我总结了7条经验
  6. Linux(Centos7)下安装Redis(redis-5.0.8)
  7. 安卓下使用GET方式向服务器端提交数据
  8. 我们大学的第一桶金!!(更新中。。。)
  9. Git版本控制:Git远程仓库
  10. solidity import @是什么意思
  11. Python 脚本编写
  12. php函数中pdf文件文字转曲,indesign使文字转曲的三种方法
  13. Flask 框架学习1
  14. android re浏览器下载,RE文件浏览器
  15. ele 多个表格 tab切换后 多选, 复选出现的问题
  16. 计算机怎样设置光盘启动项,怎么设置开机启动项-设置光盘启动教程
  17. 字体发光特效html视频,视频特效立体流光字制作
  18. 【面经】阿里数据研发多面面经
  19. 可转债交易薅羊毛策略 — Python 量化投资实战教程(10)
  20. c51单片机c语言取反运算符,单片机c语言教程:C51运算符和表达式

热门文章

  1. 用户体验设计不得不看的行业名博
  2. 数据结构练习题――Hero In Maze 简单版
  3. Hugegraph合集(一):图数据库技术调研
  4. 面试之路(6)-BAT面试之操作系统内存详解
  5. access violation c语言,请教大家:出现Access violation怎么办?
  6. 刻骨铭心地喜欢一个人然后错过
  7. 下单后,买家申请退款怎么办?(附金牌客服挽留方案及话术)
  8. 静态网站(博客)生成器Static Site Generators(SSGs)大集合
  9. Linux - 虚拟网络设备 - 链路聚合,bond,team
  10. Ubuntu安装Samba 服务器