1 nothingistrue 2023-03-23 09:16:18 +08:00 ![]() 标题党,撤了吧。两个问题都是图片修改后原图片还保留着,并不是修改后的图片还携带原始信息。 |
![]() | 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 @cjpjxjx 楼主标题党忘记说了,仅限 win11 那个工具。。。。 目测是三哥做的 KPI 应用,编辑新图片后,忘记把老数据截断了。。。 |
7 feedcode 2023-03-23 10:11:18 +08:00 ![]() 中文翻译有问题. 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 |
![]() | 改原文件的话,打开文件用 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-截图后宽度) 次。 |