取证工具:Depix的分析与研究
字数 1848 2025-08-29 08:30:18
Depix工具深度分析与使用教程
一、Depix工具概述
Depix是一款用于从像素化截图中恢复明文信息的取证工具,属于概念验证(PoC)性质的应用。它主要针对使用线性盒式过滤器(linear box filter)进行像素化的图像进行逆向处理。
核心功能
- 从像素化截图中恢复原始文本信息
- 支持分析多种常见截图工具(如Greenshot、Gimp等)生成的像素化图像
- 提供辅助工具用于生成测试图像和验证处理效果
二、安装与配置
安装依赖
# 确保已安装Python 3.x
python3 --version
# 安装必要的依赖库
pip install opencv-python numpy pillow
三、基本使用方法
1. 标准处理流程
python3 depix.py -p /path/to/pixelated_image.png -s /path/to/search_image.png -o output.png
参数说明:
-p: 待处理的像素化图像路径-s: 搜索图像(De Bruijn序列图像)路径-o: 输出结果路径
2. 针对不同像素化工具的处理
Greenshot像素化图像
python3 depix.py -p greenshot_pixelated.png -s search_greenshot.png -o result.png
Gimp像素化图像
python3 depix.py -p gimp_pixelated.png -s search_gimp.png --backgroundcolor 255,255,255 -o result.png
--backgroundcolor参数用于过滤编辑器背景色
3. 辅助工具
显示检测到的方块
python3 tool_show_boxes.py -p pixelated_image.png
生成像素化测试图像
python3 tool_gen_pixelated.py -i original.png -o pixelated_output.png
四、技术原理深度解析
1. 核心算法流程
-
图像预处理:
- 将像素化图像分割为矩形块
- 移除纯白/纯黑背景色块
- 统计色块大小分布
-
搜索图像处理:
- 使用De Bruijn序列生成包含预期字符的图像
- 以相同方式像素化搜索图像
- 计算每个块的平均颜色值
-
匹配算法:
- 对像素化图像的每个块,在搜索图像中寻找直接匹配
- 对单匹配结果视为正确
- 对多匹配块基于几何距离进行验证
- 迭代处理直至无法找到新的正确匹配
2. 线性盒式过滤器特性
像素化过程本质是:
- 将图像分割为固定大小的网格
- 对每个网格区域计算颜色平均值
- 用平均色填充整个网格区域
这种处理虽然丢失了细节信息,但保留了颜色分布的统计特征,成为Depix恢复的基础。
3. 关键假设条件
Depix算法有效的前提:
- 文本定位在像素级别完成(非亚像素精度)
- 了解原始字体规格(类型、大小等)
- 图像未经过额外压缩处理
- 使用线性盒式过滤器进行像素化
五、高级使用技巧
1. 创建有效的搜索图像
步骤:
- 创建包含De Bruijn序列的文本文件
- 使用与原始图像相同的编辑器、字体设置截图
- 保存到
images/searchimages/目录 - 处理时通过
-s参数指定
2. 优化处理效果的方法
-
精确裁剪:
- 只保留像素化区域,去除边框和其他内容
- 推荐使用GIMP等专业工具
-
CSS匹配:
- 调整
test.html中的CSS设置 - 重点匹配字间距、字母间距和字体粗细
- 在Chrome中预览调整
- 调整
-
字符集设置:
- 修改
preload.ts中的字符集定义 - 根据实际内容调整预期字符范围
- 修改
六、局限性分析
1. 技术限制
-
亚像素定位问题:
- 现代文本光栅化器使用亚像素精度定位
- 与Depix的整数块边界假设冲突
-
字体差异问题:
- 不同渲染引擎产生的微小差异
- 可变宽度字体的级联效应
-
图像压缩问题:
- JPEG等有损压缩会破坏块颜色特征
- 使匹配算法失效
2. 常见处理问题
-
字符溢出问题:
- 字符与编辑块非1:1对应
- 导致最右侧块匹配错误
-
空白问题:
- 空白字符被后续字符占据
- 难以准确识别
-
像素化偏移问题:
- 难以确定原始偏移坐标
- 影响块边界判断
七、实战案例
1. 恢复Greenshot像素化密码
步骤:
- 准备像素化密码图像
password_pixelated.png - 生成匹配的搜索图像
- 执行恢复命令:
python3 depix.py -p password_pixelated.png -s search_greenshot.png -o password_result.png - 验证输出结果
2. 处理复杂背景图像
- 识别背景色RGB值
- 修改源代码中的背景过滤逻辑
- 添加自定义背景色过滤:
# 在functions.py中修改背景色判断 if (r,g,b) == (255,255,255) or (r,g,b) == (0,0,0) or (r,g,b) == (192,192,192): continue
八、安全建议
-
不要依赖像素化保护敏感信息:
- 像素化不是安全的数据遮蔽方法
- 应使用完全覆盖或加密方法
-
防御措施:
- 对敏感信息使用实心色块完全覆盖
- 避免使用线性盒式过滤器进行模糊处理
- 考虑添加随机噪声破坏统计特征
九、开发扩展
1. 核心参数调整
-
块大小检测:
- 修改
find_rectangles函数逻辑 - 优化对非标准像素化的识别
- 修改
-
匹配阈值:
- 调整颜色匹配的容差范围
- 适应不同质量的输入图像
2. 算法优化方向
- 引入机器学习改进字符识别
- 支持亚像素精度分析
- 开发抗压缩的恢复算法
- 自动化字体参数检测
十、总结
Depix作为一款专业的像素化图像分析工具,在满足特定条件时能有效恢复被遮蔽的文本信息。其核心价值在于揭示了常见像素化处理的安全隐患,促使我们重新评估敏感信息保护的方法。理解其工作原理不仅有助于取证分析,也能指导开发更安全的信息遮蔽方案。
注意:本工具仅限合法授权的研究和取证使用,任何未经授权的信息恢复行为可能违反法律法规。