(译)从像素化屏幕截图中恢复密码

回复
头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

(译)从像素化屏幕截图中恢复密码

#1

帖子 shaoziyang »

像素化在许多领域被用来模糊图像中的信息。我见过一些公司在内部文档中用像素化的方式显示密码。没有工具可以从这样的图像中恢复密码,所以我创建了一个。本文介绍了去像素化的算法和类似的研究。

工具存放在Github上,下图显示了其中一个测试结果。

图片

什么是像素化?

像素化是部分降低图像分辨率以筛选信息的过程。本算法的实现攻击了普通的线性盒滤波器。线性框过滤器获取一个像素框,并用框中所有像素的平均值覆盖这些像素。它的实现简单,工作速度快,因为它可以并行处理多个块。

下图显示了线性框过滤器的示例。图释的图像分为四个块。块的平均颜色覆盖块的像素,从而生成最终的像素化表情。由于原始信息丢失,因此不可能直接反转滤波器。

图片


去模糊工具、历史和研究

图像可以通过多种方式进行模糊处理,通常称为模糊处理。像素化与盒过滤器可以看作是一个子集模糊技术。大多数模糊算法倾向于分散像素,因为它们试图模仿由抖动的相机或聚焦问题引起的自然模糊。

有许多消除模糊的工具,如锐化模糊的照片。不幸的是,我使用的像素化密码只有几块高,所以没有什么可磨的。

人工智能的最新发展引起了一些花哨的头条新闻,比如“研究人员已经发明了一种可以完全消除面部关系的工具”。然而,人工智能却不这么做。最近的PULSE算法类似于谷歌2016年的raiser算法。人工智能会生成像素化后产生相同图像的人脸,但它恢复的人脸不是原始人脸。

在2006年的一篇广为人知的文章中,D.Venkatraman解释了一种恢复像素化信用卡号码的算法。想法很简单:生成所有信用卡号码,将其像素化,并将结果与像素化的数字进行比较。

2019年,S.Sangwan解释了如何利用Photoshop为OSINT恢复人脸,方法是锐化图像并通过Google Images进行查找。它与其他技术类似,它使用谷歌对图片中的脸部进行“暴力”处理。

注意上述解决方案之间的相似之处。如果没有足够的信息将图像平滑到一起,那么可以选择的技术是将相似的数据像素化并检查是否匹配。这也是我从屏幕截图中恢复密码的算法的基础。


算法说明

由于线性盒滤波器是一种确定性算法,因此将相同的值Pizeling化总是会得到相同的像素化块。像素化相同的文本-使用相同的块位置-将导致相同的块值。我们可以尝试对文本进行像素化以找到匹配的模式。幸运的是,这甚至可以为秘密价值的一部分工作。每一个块或块的组合都可以被视为一个子问题。

我没有选择创建潜在字体的查找表。该算法要求在同一背景下具有相同的文本大小和颜色。现代的文本编辑器还添加了色调、饱和度和亮度,允许使用大量的潜在字体设置来拍摄屏幕截图。

这个解决方案非常简单:取一个debruijn预期字符序列,将其粘贴到同一个编辑器中,然后制作一个屏幕截图。该截图用作类似块的查找图像。例如:

图片

此序列包括预期字符的所有2字符组合。使用两个字符的组合很重要,因为有些块可以重叠两个字符。

要找到合适的匹配,需要在搜索图像中存在相同配置的像素块。在测试图像中,我的算法找不到“o”的一部分。我注意到这是因为在搜索图像中,搜索块还包括下一个字母的一部分(“d”),但在原始图像中有一个空格。

图片


创建一个带有空格的De Bruijn字母序列显然会带来相同的问题:该算法无法为连续字母找到合适的块。同时包含空格和近距字母的图像搜索时间较长,但会产生更好的结果。

对于大多数像素化图像,该工具似乎可以找到块的单个匹配结果。它假设这些是正确的。然后将周围多个匹配块的匹配进行比较,使其与像素化图像中的几何距离相同。这些匹配也被视为正确的。

当正确的块不再有几何匹配后,它将直接输出所有正确的块。对于多匹配块,它输出所有匹配的平均值。它的输出并不完美,但性能相当好。下图显示了一个带有随机字符的测试图像。大多数字符都能正确读懂。


图片


最终说明

一定要从图像中完全删除敏感信息,因为模糊处理技术可能会泄露原始值的可恢复部分。



完整原文
隐藏内容
你必须登入/注册才可观看隐藏内容
 
 
 
 
 
 
 
 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章