You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测上传文件是否被篡改?寻求开源工具/Python库方案

图片与PDF篡改检测的开源工具/ Python库方案

图片篡改检测

  • PIL/Pillow:Python主流图像处理库,可通过两种方式检测篡改:一是提取图像EXIF元数据,查看是否存在编辑软件留下的标记(如Photoshop的修改记录);二是对比图像哈希值,若上传图片与原始基准哈希不符,说明内容被修改。示例代码:
from PIL import Image
import hashlib

def verify_image_integrity(image_path, original_sha256):
    with open(image_path, 'rb') as img_file:
        current_hash = hashlib.sha256(img_file.read()).hexdigest()
    return current_hash == original_sha256

# 先预存原始图片的SHA256哈希,后续上传时比对即可
  • OpenCV:适合基于图像特征的篡改检测,可通过分析图像噪声一致性、边缘异常,或使用频域变换(如DFT)查找拼接/复制粘贴痕迹。比如检查图像不同区域的高斯噪声分布,若差异过大则大概率存在篡改。
  • ForgeryNet:基于深度学习的开源检测框架,针对图像拼接、局部篡改等场景做了优化,提供预训练模型,直接输入图像即可输出篡改区域或篡改概率。

PDF篡改检测

  • PyPDF2:轻量PDF处理库,可提取文档元数据(如修改时间、创建工具),判断是否存在异常编辑记录;也可通过哈希比对验证PDF完整性。示例代码:
import PyPDF2
import hashlib

def verify_pdf_integrity(pdf_path, original_sha256):
    with open(pdf_path, 'rb') as pdf_file:
        current_hash = hashlib.sha256(pdf_file.read()).hexdigest()
    return current_hash == original_sha256

# 查看PDF元数据中的修改痕迹
def check_pdf_edit_traces(pdf_path):
    reader = PyPDF2.PdfReader(pdf_path)
    metadata = reader.metadata
    return {
        "修改时间": metadata.get('/ModDate'),
        "创建工具": metadata.get('/Creator'),
        "上次保存工具": metadata.get('/Producer')
    }
  • pdfid:开源PDF分析工具,能扫描PDF中的可疑对象、隐藏修改痕迹或异常结构,快速判断文档是否被篡改,支持命令行调用,也可通过Python子进程集成。
  • QPDF:命令行工具,专注PDF完整性检查,执行qpdf --check input.pdf即可输出文档是否存在损坏、篡改迹象,适合批量检测场景,Python可通过subprocess模块调用。

内容的提问来源于stack exchange,提问作者Prashant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.04 15:03:10