关于 is-this-photo-real
面向调查人员与编辑的图像核验技能,强调先追溯来源、再检查像素。它提供分步骤方法,避免把重编码痕迹或异常误当成伪造证据。
主要功能
- 01按主张选择核验方法
- 02追溯图像和视频来源
- 03检查元数据与 C2PA 凭证
- 04分析光影、几何与图像信号
- 05按证据强度评定结论
适用场景
- 01核实旧图是否被配上错误说明
- 02评估图像是否经过编辑或生成
- 03检查视频剪辑与音画一致性
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ useosint/ skills --skill is-this-photo-real安装后在 Claude Code 中输入/is-this-photo-real确认已加载。
附带文件reference/tool-catalogue.mdreference/verification-checklist.md
详细介绍
这张照片是真的吗
核查顺序就是这项技能的全部:先查来源,最后才看像素。 找到最早出现的副本并阅读其说明文字,比所有取证滤镜加起来更能解决问题,而且能提供可展示的证据。像素取证只能生成一张色彩斑斓的热力图和一场争论。
初学者常犯的错误,是对下载的 JPEG 运行错误级别分析,然后宣布图像是假的。第二个错误是只盯着深度伪造:绝大多数欺骗性媒体都是真实影像配上虚假说明文字——像素没错,战争、年份和国家却错了。
分诊:你实际要回答什么问题
| 正在核验的说法 | 首先做什么 | 不要做什么 |
|---|---|---|
| “这展示的是地点 Y 发生的事件 X” | find-the-original-image,然后 geolocate-from-pixels | 使用任何取证滤镜。重新赋予语境完全不会留下像素痕迹。 |
| “这是一张未经修改的照片” | 对能获取到的、处理最少的副本进行信号级分析 | 分析截图或平台下载版本;二者都会破坏信号。 |
| “这个人在视频中说了这句话” | 先查来源,再检查视听一致性,最后逐帧检查人脸边界的变化 | 依赖 AI 检测器的评分。 |
| “这张图片是 AI 生成的” | 检查是否缺少相机物理特征、物体结构是否不连贯 | 单独依赖检测器的判定。 |
| “这张截图是真的” | 检查布局、字体和界面版本是否一致;如果存在,则查阅底层记录 | 使用图像取证。伪造截图是在浏览器中制作的,不是在图像编辑器里。 |
然后始终要问:如果这个说法属实,图像会是什么样子?把答案写下来,再专门检查这些特征。核查是在检验假设;寻找异常则行不通,因为异常无处不在。
方法
- 获取最佳副本。 每次重新编码、调整尺寸和截图都会破坏取证信号。追查最初上传的版本或通讯社版本,而不是平台转存版本。对文件计算哈希,并在副本上操作。如果你只有截图,就如实说明,并降低所有后续结论的确定性。
- 查来源。 运行
find-the-original-image;对于视频,提取关键帧并搜索。你需要找到更早出现的版本、不同的说明文字、摄影师署名,以及通过read-deleted-pages交叉核实的网页日期。如果更早的副本配有不同的说明文字,核查就可以结束了。 - 查元数据。 运行
secrets-in-file-metadata:检查编辑链、缩略图与图像的对比、时间戳是否矛盾,以及 MakerNotes 是否符合所称设备。 - 查来源签名。 检查是否有 C2PA Content Credentials。
- 检查内部一致性。 通过
geolocate-from-pixels,核对标牌语言、车牌、货币、制服、车型、季节、天气和阴影是否与所称日期及地点相符。普通的调查工作比取证更有效。 - 检查物理一致性。 检查光照、阴影、反射和透视。
- 进行信号级取证。 检查噪声残留、JPEG 量化与二次压缩、克隆检测以及彩色滤光阵列痕迹。很容易过度解读,而且对经过平台处理的文件毫无价值。
- 写明你核实了什么,而不是给出判决。
工具及其失效情形:reference/tool-catalogue.md。
按成本排序:reference/verification-checklist.md。
光影与几何——经得起检验的指标
无需工具,也不依赖你向编辑或法庭解释得通的推理,且不受重新压缩影响。 应把时间花在这里。阴影汇聚是最有力的指标。阳光是平行的,因此在透视图像中,从每个阴影的末端穿过投下该阴影的物体底部画线,这些线必须汇聚于同一点——光源的投影点。画三四条。如果某个物体对应的线无法与其他线汇聚,它很可能不属于原始场景;斜坡地面会造成干扰,因此只使用同一平面。接下来:户外场景中,阴影方向和半影的硬度应保持一致;眼睛、玻璃和抛光金属上的镜面高光,应指向一致的光源位置;反射中必须呈现前方的物体,位置正确且左右相反;同一地面平面上的人,其平行线应汇聚于共同的消失点,且眼平线一致;真实镜头会留下光学特征——一致的景深、高对比边缘处的色差、渐晕,以及随亮度变化的噪声底。图像其他部分有这些特征,但某个元素完全没有,说明它是后来添加的。
误差级别分析,以及它为何大多被误用
ELA 会以已知的 JPEG 质量重新保存图像,并显示差异,其理论依据是:压缩次数不同的区域会产生不同的响应。它会自信地得出荒谬结论,有四个原因:它会受内容影响,所以边缘和纹理会变亮,而平坦的天空和皮肤会变暗,这意味着每张图像都有“可疑的亮区”;重新保存一次就会破坏分析结果,因此对社交媒体下载图像进行 ELA,反映的只是平台的编码器,与更早的处理无关;它无法定位现代编辑,因为内容感知填充、生成式编辑和完整重新保存都不会留下可供查找的差异历史;而且它会在两个方向上失效,未处理图像中出现亮区、处理过的图像却呈现干净结果,都很常见。
它适用的情况:对直接来自相机的单代 JPEG,来自不同压缩源的粘贴区域确实可能显现出来。适用范围很窄。只把它作为一项较弱的参考,仅用于处理最少的文件,绝不要以此作为发布声明的依据。更可靠的相关方法——将量化表与相机特征进行比较,以及检测二次压缩——也会受到平台处理的影响而失效。
C2PA 和 Content Credentials
C2PA 会将经过加密签名的清单绑定到文件,记录拍摄和编辑历史。若有此类清单,它就是最有力的来源证据,因为它可以验证,而非依靠推断。有效清单意味着签署者声明了这段历史、签名后文件未被更改,并且你知道该追究谁的责任——但不代表内容属实。经过签名的摆拍场景照片,仍然只是经过签名的照片。
缺失几乎说明不了什么:大多数相机不会签名,大多数编辑流程不会保留清单,平台也会在重新编码时将其剥除。凭证缺失是默认状态,不是危险信号。用于标记合成媒体的 IPTC 数字来源类型字段,以及特定模型的隐形水印也一样——能检测到时,阳性结果很有力;阴性结果只能说明没有找到某家供应商的标记。
AI 生成内容——持久的迹象与会过时的迹象
任何依赖模型当前弱点的判断方式,最终都会失效。优先寻找基于物理规律和结构的迹象。
持久的迹象,因为它们需要生成器不具备的世界模型: 不可能的光照(阴影方向不一致、物体下方没有阴影、主体被来自不存在光源的光照亮);背景物体的结构不连贯(自行车车架没有连起来、栏杆的立柱间距变化、楼梯踏板无法对齐、带子消失后又重新出现、带图案的织物上的图案没有随褶皱变化);文字退化,尤其是较小、重复或位于边缘的文字;接触和遮挡错误,例如握着杯子的手没有环绕杯子,或脚没有接触地面;缺少相机物理特性——没有传感器噪点、没有色差、焦点均匀,高频细节过少,而这正是“皮肤过于平滑”的实际表现;以及完全没有可信的来源记录。
容易过时——可以检查,但不要仅凭此判断: 手指和牙齿的数量、耳朵不对称、前景文字乱码、珠宝变形、可疑的对称脸部。
检测工具。 给出自信的分数,却没有可审计的推理过程。它们会把压缩、缩放、放大、重度编辑和弱光下拍摄的真实照片误判为 AI 生成内容;会漏掉训练数据之后出现的生成器;而且很容易受到对抗性干扰——轻微重新压缩就会改变分数。使用不止一种工具,把检测结果视为弱信号,绝不要发布仅凭一种工具得出的结论。如果你的证据只是某个网站上的百分比,那你就没有证据。
视频
- 容器和编码器。
ffprobe -show_format -show_streams和 MediaInfo 可以提供编码器字符串、帧率、旋转矩阵和轨道结构;如果这些值符合平台重新编码的典型特征,就说明你拿到的不是原始文件。ffprobe -show_frames可以显示帧类型——重复帧意味着进行了帧率转换或插入了慢动作;静态镜头中段出现无法解释的关键帧可能表示有拼接;隔行扫描或电影电视转换伪影则暴露了无人提及的处理流程。 - 生成损失。 块状失真、色带和蚊噪会随着每次重新编码不断累积。严重退化的素材要么年代久远,要么被广泛转载,或者两者皆是——对它进行的所有信号级测试都无效。
- 音频。 口型同步漂移、室内声学效果与可见空间不匹配、镜头转入室内时环境音没有变化、剪辑点处噪声底突然变化。这是大多数伪造视频中最薄弱的一环,也是最少被检查的一环。
- 换脸行为。 发际线和下颌处出现闪烁或模糊;脸部光照没有随头部运动变化;说话时牙齿和舌头逐渐失真;脸部的分辨率与画面其他部分不同;侧脸转动和手部遮挡时效果崩坏。
- 反向搜索关键帧。 视频核验最常见的结果,是找到同一视频的更早版本,发布在别处。关键帧提取命令见
find-the-original-image。
问题出在哪里
- 每种筛选方法都有基准率问题。 对一张真实照片运行六种取证工具,总会有某些地方显得异常。异常是实拍图像的常态。
- 这是平台造成的。 调整大小、重新编码、色度子采样和剥除元数据都会产生伪影,人们可能会将其归因于篡改。在解读任何伪影前,先查明处理历史。
- 你拿到的往往是最糟糕的版本——一张转发截图中的裁剪图。大多数信号层面的分析对它都无效,诚实的报告应当如实说明。
- “未被篡改”不是结论。 未检测到篡改,只能说明你做的测试结果如何,并不能说明图像本身如何。
- 真实照片也可能完全误导人。 选择性取景、摆拍场景,以及配有虚假说明的真实图像,都能通过每一项取证测试。
- 辟谣会扩大传播。 详细反驳会传播原始说法——这是值得审慎作出的编辑判断。有时,素材也会被刻意散布,等着被发现和辟谣,或为了观察谁会调查;参见
investigate-without-getting-made。 - 根据相似外貌进行身份认定是这里后果最严重的错误——“这是 Z 某,因为他们长得像”并不是结论。
置信度评级
分别评估每项说法——一张图像可能同时具有已确认的来源、与事实相矛盾的说明,以及未经确认的真实性。
- 已确认是原图且描述准确——找到来自可信发布者的最早版本,日期经独立佐证,地点经视觉核实,内部细节一致,元数据或几何特征均无矛盾。
- 已确认被重新置于不同语境——有证据表明同一图像此前曾配有不同且来源更可靠的说明发布。这是这里最常见的肯定性结论。
- 很可能经过篡改——存在具体、可描述的物理或几何不一致之处,可以指出来;最好还能找到被插入元素的来源。热力图不算。
- 很可能是合成图像——存在多处持久的生成式特征,没有来源历史,没有符合相机成像规律的压缩或元数据,也没有更早的版本。请指出这些特征。
- 未确认——没有找到更早的版本,也没有发现问题。大多数案例都止步于此。
- 无法评估——现有版本处理过度,无法进行回答问题所需的测试。说明哪些测试无效,以及原因。
操作示例
一段显示爆炸的视频正在传播,配文称这是当天早上对某座具名城市发动的袭击。
yt-dlp 拉取了最高质量版本,而不是屏幕录制。ffprobe 显示,帧率和编码器字符串都符合平台转码的典型特征,因此无法进行信号级测试——记下来,但不必遗憾。
在场景切换处提取关键帧。第 4 帧没有结果。第 9 帧是唯一出现天际线的一帧,它匹配到一条来自 18 个月前、发生在另一个国家的新闻报道。10 分钟内得出初步结论。但早先页面上的视频更短,那么哪一个才是源头?可疑版本在第 4 秒处有一个硬切,音频的噪声底也突然跳变;切换后的环境音与画面中可见的空间不符。添加的是音频,而非视频。
值得记录的死胡同:AI 检测器判定这些帧很可能是合成的。它们其实是真实广播视频经过重新编码和裁剪后的画面——恰好是最容易骗过这些工具的输入。已排除。
调查结果:确认重新置入语境,read-deleted-pages 也证实了早先页面的日期;音频可能经过篡改;鉴于现有副本的情况,无法在信号级别评估底层视频的真实性。
报告标准。 说明你核实了什么、无法核实什么,以及每项结论依据是什么——绝不要只给出一句“假的”或“真的”。站得住脚的表述应是:该图像至少在所称事件发生前三年就已发布于某新闻网站,并注明了一位具名摄影师;地点与该署名相符,而与所声称的地点不符;未检测到篡改,但唯一可用的副本经过了平台转码,因此信号级测试没有参考意义。“我们的分析表明这是假的”则不行。列出你运行的测试及其阴性结果、文件的处理历史和你的假设,然后将材料包交给 write-the-intel-brief。
后续调查方向
| 已获得的信息 | 交给 |
|---|---|
| 更早的副本、署名、原始配文 | find-the-original-image |
| 编辑链、设备、时间戳 | secrets-in-file-metadata |
| 地点和日期核实 | geolocate-from-pixels、where-was-this-taken |
| 已删除或更改的源页面 | read-deleted-pages |
| 发布或投放内容的域名 | who-owns-this-domain、recon-a-domain-passively |
| 放大传播该媒体的账号 | hunt-a-handle、pattern-of-life-from-socials |
| 传播背后的协同网络 | graph-the-network、find-leaks-in-the-wild |
| 媒体中出现或被署名的具名人士 | find-anyone |
法律与伦理说明
在大多数司法管辖区,公开指控具名人士伪造内容都可能带来诽谤风险,“我们的工具这么说”并不能作为抗辩理由。将材料上传到在线取证服务,意味着向这些服务披露材料;有些服务还会将其发布到公开图库。提交任何敏感内容前,请先确认工具是否会公开提交内容。如果媒体涉及犯罪、受害者或私密内容:尽量减少副本,不要转发;如果涉及儿童性虐待材料,应立即停止并向相关主管机关报告,而不是继续分析。参见 ../../ETHICS.md。