spipm/Depixelization_poc

GitHub: spipm/Depixelization_poc

Depix是一个从马赛克截图中恢复纯文本的概念验证工具,揭示像素化处理作为脱敏手段存在严重安全隐患。

Stars: 3989 | Forks: 295

# Depix Depix 是一种用于从马赛克截图中恢复纯文本的技术的 PoC。 该实现适用于使用线性盒式滤镜(linear box filter)生成的马赛克图像。 在[这篇文章](https://www.spipm.nl/2030.html)中,我介绍了关于像素化和类似研究的背景信息。 ## 示例 ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/f60bd0db1c121946.png) ## 更新 * 24 年 12 月 24 日:将 repo 设为私有,更改了名称,然后再次公开。因为媒体的炒作,它获得了荒谬数量的 star,这感觉不太对。这是我当年为一家公司快速制作的一个 PoC,因为有人把一个拥有 Domain Admin 权限的账户密码部分打了马赛克。炒作是因为那张引人注目的图片而开始的,最终这个 repo 获得了 26152 个 star。如果我再次获得这么多 star,我希望那也是为一个我自己同样热衷的项目。 ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/eae2775aa4121947.png) * 23 年 11 月 27 日:重构并移除了所有 pip 相关的东西。我喜欢可以直接运行的脚本。如果找不到包,直接安装它就是了。还添加了 `tool_show_boxes.py` 来展示方块检测器有多糟糕(你必须非常精确地切出像素)。在 TODO 中列入了创建一个直接切出静态大小方块的版本。 ## 安装 * 安装依赖项 * 运行 Depix: ``` python3 depix.py \ -p /path/to/your/input/image.png \ -s images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png \ -o /path/to/your/output.png ``` ## 用法示例 * 对使用记事本创建并使用 Greenshot 打马赛克的示例图像进行反像素化。Greenshot 通过平均 gamma 编码的 0-255 值来进行平均,这是 Depix 的默认模式。 ``` python3 depix.py \ -p images/testimages/testimage3_pixels.png \ -s images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png ``` 结果:![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/add77ba2c4121948.png) * 对使用 Sublime 创建并使用 Gimp 打马赛克的示例图像进行反像素化,其中平均是在线性 sRGB 中完成的。backgroundcolor 选项过滤掉了编辑器的背景颜色。 ``` python3 depix.py \ -p images/testimages/sublime_screenshot_pixels_gimp.png \ -s images/searchimages/debruin_sublime_Linux_small.png \ --backgroundcolor 40,41,35 \ --averagetype linear ``` 结果:![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/c01570b8f3121949.png) * (可选)你可以使用 `tool_show_boxes.py` 查看方块检测器是否找到了你的像素。如果看起来乱七八糟,请考虑更小批量的像素。良好方块的示例: ``` python3 tool_show_boxes.py \ -p images/testimages/testimage3_pixels.png \ -s images/searchimages/debruinseq_notepad_Windows10_closeAndSpaced.png ``` * (可选)你可以使用 `tool_gen_pixelated.py` 创建马赛克图像。 ``` python3 tool_gen_pixelated.py -i /path/to/image.png -o pixed_output.png ``` * 有关详细说明,请尝试运行 `$ python3 depix.py -h` 和 `tool_gen_pixelated.py`。 ## 关于 ### 制作搜索图像 * 从截图中将马赛克块作为一个矩形剪切出来。 * 将具有预期字符的 [De Bruijn sequence](https://en.wikipedia.org/wiki/De_Bruijn_sequence) 粘贴到具有与输入图像相同字体设置的编辑器中(相同的文本大小、相似的字体、相同的颜色)。 * 对该序列进行截图。 * 将该截图移动到类似 `images/searchimages/` 的文件夹中。 * 运行 Depix 并将 `-s` 标志设置为该截图的位置。 ### 制作马赛克图像 * 精确剪切马赛克块。有关示例,请参阅 `testimages`。 * 它尝试检测块但效果并不理想。如果你的块没有被正确检测,请尝试使用 `tool_show_boxes.py` 脚本和不同的剪切方式。 ### 算法 该算法利用了线性盒式滤镜分别处理每个块这一事实。对于每个块,它将搜索图像中的所有块进行像素化以检查直接匹配。 对于某些马赛克图像,Depix 设法找到了单一匹配结果。它假设这些是正确的。然后将周围多匹配块的匹配项进行比较,以确认其在几何距离上与马赛克图像中的相同。匹配项也被视为正确。此过程重复几次。 在正确块没有更多几何匹配后,它将直接输出所有正确块。对于多匹配块,它输出所有匹配的平均值。 ### 已知限制 * 该算法按整数块边界进行匹配。因此,它有一个潜在假设,即对于所有渲染的字符(在 de Brujin 序列和像素化图像中),文本定位都是在像素级别完成的。然而,一些现代文本光栅化器将文本定位[在亚像素精度](http://agg.sourceforge.net/antigrain.com/research/font_rasterization/)。 * 你需要知道截图中使用的字体规格,以及某些情况下的屏幕设置。但是,如果原始图像中有足够的纯文本,你或许可以使用原始图像作为搜索图像。 * 如果执行了额外的图像压缩,此方法将不起作用,因为它会打乱块的颜色。 ### 未来开发 * 实现更多过滤函数 创建更多类似于某些流行编辑器的平均滤镜。 * 创建一个利用 HMM 的新工具 尽管如此,仍然鼓励任何对这种反像素化类型充满热情的人实现自己的基于 HMM 的版本并分享它。 ### 其他来源和工具 在创建此程序后,有人向我指出了一份 2016 年的[研究文档](https://www.researchgate.net/publication/305423573_On_the_Ineffectiveness_of_Mosaicing_and_Blurring_as_Tools_for_Document_Redaction),其中一组研究人员设法创建了一个类似的工具。他们的工具具有更高的精度,并且适用于许多不同的字体。虽然他们的原始源代码不公开,但在 [DepixHMM](https://github.com/JonasSchatz/DepixHMM) 有一个开源实现。 22 年 2 月 16 日编辑:[Dan Petro](https://bishopfox.com/authors/dan-petro) 创建了工具 UnRedacter([文章](https://bishopfox.com/blog/unredacter-tool-never-pixelation)、[源码](https://github.com/BishopFox/unredacter))来破解一个作为对 Depix 回应而创建的[挑战](https://labs.jumpsec.com/can-depix-deobfuscate-your-data/)! 25 年 4 月 16 日编辑:Jeff Geerling 为移动图像中马赛克文件夹内容的去像素化创建了一个[挑战](https://www.jeffgeerling.com/blog/2025/its-easier-ever-de-censor-videos)。有三个人成功做到了。[这里](https://github.com/KoKuToru/de-pixelate_gaV-O6NPWrI)是 KoKuToru 的一个 repo,展示了如何使用 TensorFlow 做到这一点!太神奇了!
标签:ESC4, meg, OSINT, Python, Steganography, 信息安全, 像素化, 像素化还原, 反马赛克, 图像分析, 图像处理, 图片解码, 密码学, 密码还原, 截图还原, 手动系统调用, 无后门, 网络安全, 视觉黑客, 逆向工具, 隐私保护, 隐私恢复, 马赛克去除