JPEG 图片篡改检测

voidshine · 2024-10-17 17:02:48 · 438 次点击
我写一个简单的 JPEG 图片防篡改工具. 希望大家帮我看看有没有漏洞可以钻.

主要思路是对 JPEG 图片进行签名并将签名信息写入 EOI 文件尾, 若签名后的图片内容有任何的改动(不包括修改文件名), 则无法通过验证, 以此来检测该图片相较于签名前的图片是否有改动过.

项目已上传至[GitHub]( https://github.com/happy-shine/pixelguard)

```
$ pixelguard sign -i official.jpg  -o output_official.jpg                # 将签名信息写入图片尾部
JPEG file signature successful!

$ pixelguard verify output_official.jpg                        # 图片未被修改
This JPEG file has not been tampered with.

$ exiftool -Artist="happy-shine" output_official.jpg        # 修改 EXIF 信息(或修改像素点之类的操作)
    1 image files updated

$ pixelguard verify output_official.jpg                # 再次验证, 检测到图片内容被修改
Warning: This JPEG file has been tampered with!
```
举报· 438 次点击
登录 注册 站外分享
23 条回复  
cat 小成 2024-10-18 08:21:14
@voidshine 所以在哪台机器生成的 只能在哪台机器验证吗,这个局限性 感觉比截掉 ffd9 的问题更大啊
qdwang 小成 2024-10-17 19:54:53
我目前只想到一种适用情况。就是怕云服务器把我图片改了。。。其他好像没什么用?
cavan 初学 2024-10-17 18:50:17
可以考虑图像数字水印技术,这种技术可以保证图片肉眼看不出内容变化的情况下,隐写版权信息进去。比如对图像矩阵进行离散余弦变换后,把版权信息写入到矩阵的左上角,然后再离散余弦反变换回 jpeg 图像,这样截图、缩放、旋转后,版权信息一般都还在。
kera0a 初学 2024-10-17 18:43:04
下一步是不是要引入 ca 了😄
TimG 小成 2024-10-17 18:39:27
@voidshine 13# 这种情况也能自举?不用存储旧信息就能实现吗?如果旧验证信息同样存在于文件内那就存在被一起篡改的可能,否则理论上就没法自举,如果能同时实现,确实是有巧思,佩服。
Yukineko 小成 2024-10-17 18:31:29
@voidshine #13 意识是只有在特定机器上校验才能通过?换一个机器就校验不了了?
Afcar 初学 2024-10-17 18:20:32
@ltyj2003 你说到点子上了
yhnbgfd 初学 2024-10-17 18:11:00
一直在想有什么场景,
比如, 以后手机截图自带签名功能, 以后各种屏幕截图拿去验签一下就知道是真截的还是 p 的? 额, 如果我直接截屏 P 的图片阁下..额
ltyj2003 小成 2024-10-17 18:06:08
人家篡改完重新生成个签名信息替换,阁下当如何应对?
iqoo 小成 2024-10-17 18:04:04
还以为利用水印信息存储签名呢
123下一页
返回顶部