1
nothingistrue 2023-03-23 09:16:18 +08:00 3
标题党,撤了吧。两个问题都是图片修改后原图片还保留着,并不是修改后的图片还携带原始信息。
|
2
cherryas 2023-03-23 09:31:47 +08:00
"同时,用户已经上传的图片,也存在被依靠该漏洞复原的可能。"
|
3
TGl2aWQgZGUgZGll 2023-03-23 09:50:31 +08:00
|
4
opengps 2023-03-23 09:52:44 +08:00
你可以套娃啊,截图之后再截图一次
|
5
cjpjxjx 2023-03-23 10:00:49 +08:00
那么,下图是使用 Win10 截图工具在截图后点击保存,随后裁剪并再次覆盖源文件保存的截图,有人能还原出被我裁剪掉的内容吗
https://img.cencs.com/images/2023/03/23/O1QP.png |
6
lambdaq 2023-03-23 10:05:54 +08:00
|
7
feedcode 2023-03-23 10:11:18 +08:00 3
中文翻译有问题.
current exploits only work with PNG images, not JPEGs. A screenshot cropped with Snipping Tool and then saved over the original (the default behavior) adds a new IEND chunk to the PNG image but leaves a bunch of the original screenshot's data after the IEND chunk. https://www.w3.org/TR/PNG-Structure.html app https://acropalypse.app/ proof code: https://gist.github.com/DavidBuchanan314/93de9d07f7fab494bcdf17c2bd6cef02 |
8
leafin 2023-03-23 10:16:24 +08:00 via Android
如果我没理解错,这两个新闻说的是修改前的原始文件没有删除而是被新文件覆盖,有被还原的可能性。
我个人理解这种还原需要接触到存储设备,是类似硬盘数据恢复这种操作。 所以如果把这张图片拷贝/发送给别人,对方是无法还原的 |
9
tool2d 2023-03-23 10:21:52 +08:00
|
13
oldshensheep 2023-03-23 11:07:34 +08:00 via Android
改原文件的话,打开文件用 r+,然后读取数据,删除全部数据,写入新数据。
正确做法应该是 seek(0),然后 truncate()。 之前开发就遇到这个问题。。。。 |
14
oldshensheep 2023-03-23 11:11:00 +08:00 via Android
@cjpjxjx 这个需要知道裁剪前原图的大小,用 7 楼的 app 那个链接,或者 Python 代码试试
|
15
nothingistrue 2023-03-23 11:25:26 +08:00
@TGl2aWQgZGUgZGll #3 以楼主两个链接的对应内容来看,问题是,本地文件系统残留原始内容,修改之后的文件是没有残留的,那就自然不严重。当然看 7 楼贴出英文原文后,问题是修改之后的文件当中,而非本地文件系统残留原始内容,那就是很严重的。这不但表示楼主的两个链接仍然是标题党,还表示特么的是机翻加农场。
|
16
nothingistrue 2023-03-23 11:35:49 +08:00
@tracert 再加个附言吧:
原始链接的内容有问题,1 楼的回复基于原始内容也是错的,问题很严重。7 楼英文的真正意思大致如下。截图修改并保存的时候,在文件系统处理上上用的是追加方式,于是原始内容仍然存在与新文件中。即,修改之后的文件还保留着修改之前文件的完整信息,所以问题非常大。只有 PGN 有此问题,JPEG 无此问题。 |
17
oldshensheep 2023-03-23 13:33:23 +08:00
@nothingistrue 其实是覆盖而不是追加,修改后的文件并没有保留着修改之前文件的完整信息,而是保留了没有覆盖的部分信息。
其实 JPG 保存同样的也是没有调用 truncate ,但是 JPG 不能被复原,是因为 JPG 压缩过程有熵编码,而它的编码信息在文件头部,而软件是从文件头部覆写的,所以就不能复原了。 |
19
crokily 2023-03-23 20:08:36 +08:00
我拿 ios 的截图试了下
截图,裁剪成四分之一大小 然后进入图库,此时该图确为四分之一大小,编辑该图,右上角就有一个复原按钮 点复原,图片就变成了原大小。 这说明 ios 的截图裁剪也是有保留原图信息的 |
20
2le 2023-03-24 10:20:21 +08:00
看了下代码和原帖,似乎只要存在未被破坏的 IDAT 数据块,就可以实现部分复原。我本地验证了下,只要确保图片宽度是正确的(高度不是必须),就可以实现图片复原。图片宽度可以通过递增尝试,写个遍历脚本,成功率应该挺大的,拿 4k 分辨率来算,只需要尝试 (3840-截图后宽度) 次。
|