Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
sherloq — 一个开源的数字图像取证工具集 | Kitploit
工具/GitHubGitHub/guidobartoli/sherloq
取证分析隐写术数字取证密码学机器学习论文与研究学习与教育
GitHubguidobartoli/sherloq

sherloq

一个开源的数字图像取证工具集

查看仓库
3.2k3051个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Sherloq
一个开源的数字图像取证工具集

简介

"法庭图像分析是运用图像科学和领域专业知识,在法律事务中解释图像内容和/或图像本身的活动。具有执法应用背景的法庭图像分析主要子学科包括:摄影测量、摄影比对、内容分析和图像鉴真。"(科学工作组成像技术)

Sherloq 是一个个人研究项目,旨在实现一个完全集成的数字图像取证环境。它并非一个能自动判断图像是否被篡改的工具(这样的工具可能永远不会存在……),而是作为实验最新研究论文和研讨会中各种算法的辅助工具。

尽管许多商业解决方案价格高昂,且通常仅限执法和政府机构使用,但本工具集旨在成为一个可扩展的框架,同时也为任何对数字信号处理这一特定应用领域感兴趣的人提供一个起点。

我坚信安全通过隐晦是提供任何取证服务的错误方式(例如:“使用这个专有软件,我向你保证这张照片是原始的……你必须相信我!”)。遵循开源理念,每个人都应该能够自行尝试各种技术,获取知识并与社区分享……如果能贡献代码改进就更好了!:)

  • 历史
  • 功能特性
  • 截图
  • 安装
  • 项目结构
  • 更新
  • 参考文献

历史

第一个版本于2015年用C++11编写,构建了一个带有多选项的命令行实用工具,但很快发现它过于笨重且交互性不足。该版本可在安装OpenCV、Boost和AlgLib库后通过CMake编译。这个最初的概念验证实现了约80%的预期功能(完整列表见下文)。

2017版本在包含新颖算法的同时,主要增加了基于Qt的多窗口GUI以提供更好的用户体验。多个分析结果可同时显示在屏幕上,并实现了快速缩放/滚动的查看器,方便图像导航。该项目可使用Qt Creator配合Qt 5和OpenCV 3进行编译,覆盖了约70%的预期功能。

快进到2020年,我决定将所有代码移植到Python(PySide2 + Matplotlib + OpenCV),以便更轻松地开发和部署。虽然这一迭代才刚刚开始,我尚未将所有之前的代码移植到新平台,但我认为这将是项目的最终“形态”(除非有人自愿开发一个漂亮的Web应用程序!)。

我很乐意分享我的代码,并与任何有兴趣改进或测试它的人联系,但请记住,该仓库并非用于分发最终产品,我的目标只是在公开环境下跟踪一个谦逊的教育工具的开发,所以请期待存在bug、代码不完善和缺少功能的情况!;)

功能特性

以下列表包含了工具包在达到测试版后将(希望)提供的功能(注意: 程序中以斜体显示的功能尚未实现!)。

界面

  • 基于Qt的现代GUI,支持多工具窗口管理
  • 支持多种格式(JPEG、PNG、TIFF、BMP、WebP、PGM、PFM、GIF)
  • 高响应图像查看器,支持实时平移和缩放
  • 多种可供交互式尝试的最新算法
  • 导出分析和文本结果
  • 提供详细的在线帮助及教程

工具

通用

  • 原始图像:显示未经修改的参考图像,用于视觉检查
  • 文件摘要:检索物理文件信息、加密和感知哈希值
  • 十六进制编辑器:打开外部十六进制编辑器,显示和编辑原始字节
  • 相似搜索:浏览在线搜索服务,寻找视觉相似的图像

元数据

  • 头部结构:导出文件头部结构,并显示交互式视图
  • EXIF完整导出:扫描文件元数据,收集所有可用信息
  • 缩略图分析:提取可选的内嵌缩略图,并与原始图像比较
  • 地理定位数据:检索可选的地理定位数据,并在地图上展示

检查

  • 增强放大镜:带增强功能的放大镜,用于更好地识别伪造痕迹
  • 通道直方图:显示单个颜色通道或RGB复合的交互式直方图
  • 全局调整:应用标准图像调整(亮度、色相、饱和度等)
  • 参考对比:打开同步的双视图,与另一张图片进行比较

细节

  • 亮度梯度:分析图像中水平和垂直的亮度变化
  • 回声边缘滤波:使用导数滤波器揭示人为制造的虚焦区域
  • 小波阈值:通过不同的小波系数阈值重建图像
  • 频率分离:将图像亮度分离为高频和低频分量

颜色

  • RGB/HSV绘图:显示像素值的RGB和HSV交互式2D和3D图
  • 色彩空间转换:将RGB通道转换为HSV/YCbCr/Lab/Luv/CMYK/Gray空间
  • PCA投影:使用颜色PCA将像素投影到最显著的分量上
  • 像素统计:计算每个像素的最小/最大/平均RGB值

噪声

  • 噪声分离:估计并提取不同类型的图像噪声分量
  • 最小/最大偏差:突出显示偏离基于块的最小/最大统计量的像素
  • 位平面值:显示各个位平面,以发现不一致的噪声模式
  • 小波分块:显示图像中平均噪声水平,发现噪声不一致性
  • PRNU识别:利用不同相机引入的传感器模式噪声

JPEG

  • 质量估计:提取量化表,估计最后保存的JPEG质量
  • 错误等级分析:显示针对固定压缩级别的像素级差异
  • 多次压缩:使用机器学习模型检测多次压缩
  • JPEG鬼影图:在差异图像中突出显示不同压缩级别的痕迹

篡改

  • 对比度增强:分析颜色分布以检测对比度增强
  • 复制-移动伪造:使用不变特征描述符检测克隆区域
  • 拼接合成:利用DCT统计自动检测拼接区域
  • 图像重采样:估计2D像素插值以检测重采样痕迹

其他

  • 中值滤波:检测非线性中值滤波留下的处理痕迹
  • 光照图:在估计的3D表面上估算场景局部光方向
  • 坏/热像素:检测并修复由传感器缺陷引起的坏/热像素
  • 立体图解码器:解码隐藏在交叉眼自立体图中的3D图像

截图

通用
通用:原始图像、十六进制编辑器、文件摘要、相似搜索

元数据
元数据:EXIF完整导出、头部结构

检查
检查:增强放大镜、通道直方图、参考对比

细节
细节:亮度梯度、回声边缘滤波、小波阈值、频率分离

颜色
颜色:RGB/HSV绘图、色彩空间转换、PCA投影、像素统计

噪声
噪声:信号分离、最小/最大偏差、位平面值

JPEG
JPEG:质量估计、错误等级分析

篡改
篡改:对比度增强、复制/移动伪造、拼接合成、中值滤波

安装

[1/4] 下载源代码

将当前仓库克隆到本地文件夹,并将当前目录切换到该文件夹。

[2/4] 创建虚拟环境

Sherloq 使用 Python 3.11。推荐使用 uv 进行设置,因为它在Linux、macOS和Windows上提供相同的工作流程,可在需要时安装 Python,并将项目环境保留在本地 .venv 文件夹中。

按照官方安装指南安装 uv,然后在 Sherloq 根目录下创建环境:

root@kitploit:~
$ uv venv --python 3.11

仓库中还包含一个 .python-version 文件,因此后续 uv 命令默认使用 Python 3.11。

[3/4] 安装依赖

root@kitploit:~
$ uv pip install -r gui/requirements.txt

某些实验性AI支持的工具需要额外的包。仅当您计划使用这些工具时才安装它们:

root@kitploit:~
$ uv pip install -r gui/requirements_ai_solutions.txt

[4/4] 启动程序

可以从仓库根目录启动 Sherloq。应用程序包通过集中的项目路径解析图标、模型和捆绑工具。

Linux/macOS

root@kitploit:~
$ source .venv/bin/activate
$ python -m gui.sherloq_app

Windows PowerShell

root@kitploit:~
> .venv\Scripts\Activate.ps1
> python -m gui.sherloq_app

您也可以使用仓库根目录的兼容启动器:

root@kitploit:~
$ python sherloq.py

Linux 用户注意:如果显示以下错误:

root@kitploit:~
qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

在终端中运行以下命令:sudo apt install -y libxcb-cursor-dev

项目结构

Python Qt 应用程序现在位于可导入的 gui/sherloq_app 包中:

  • main.py:Qt 应用程序入口点和主窗口。
  • core/:共享的图像处理辅助工具,如JPEG工具和文件加载。
  • ui/:可重用的Qt小部件、查看器、表格和工具树。
  • tools/:按工具箱类别分组(通用、元数据、检查、细节、颜色、噪声、jpeg、篡改、其他)的分析小部件。
  • paths.py:中央访问图标、模型和捆绑原生辅助工具,使代码不再依赖从 gui 目录启动。

大型捆绑资产和第三方研究组件仍位于 gui/icons、gui/models、gui/noiseprint、gui/pyexiftool、gui/butteraugli、gui/ssimulacra 和可选的 gui/TruFor_main 下。

有关贡献者导向的地图,请参见 docs/project-structure.md。

更新

当发布新版本时,使用 Git 或下载最新源代码更新本地工作副本,然后从 Sherloq 根目录刷新环境:

root@kitploit:~
$ uv pip install --upgrade -r gui/requirements.txt

如果您安装了可选的 AI 依赖项,也请刷新它们:

root@kitploit:~
$ uv pip install --upgrade -r gui/requirements_ai_solutions.txt

入门推荐资源

  • 包含实际示例和对 Sherloq 中已实现技术的深入分析的文章:“A Picture's Worth: Digital Image Analysis and Forensics”(Neal Krawetz) [论文]
  • 包含实际示例和对使用 Sherloq 中实现的“JPEG ghosts”、“Image Resampling”和“Noise Wavelet Blocking”工具的深入分析的论文。该工作还提供了对人工智能驱动方法在数字图像取证中的使用和可靠性的见解。(UHstudent) [论文]

Sherloq 中实现算法的参考文献

  • 图像重采样:“Exposing Digital Forgeries by Detecting Traces of Re-sampling”(Alin C. Popescu 和 Hany Farid) [论文]
  • JPEG 鬼影:“Exposing Digital Forgeries from JPEG Ghosts”(H. Farid) [论文]
  • 噪声小波分块:“Using noise inconsistencies for blind image forensics”(Babak Mahdian 和 Stanislav Saic) [论文]

参考文献

  • “Noiseprint: a CNN-based camera model fingerprint”(Davide Cozzolino, Luisa Verdoliva) [网站]
  • “Two Improved Forensic Methods of Detecting Contrast Enhancement in Digital Images”(Xufeng Lin, Xingjie Wei 和 Chang-Tsun Li) [论文]
下载工具