Windows 自带截图工具存在漏洞,裁剪内容可被还原 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tracert
V2EX    Windows

Windows 自带截图工具存在漏洞,裁剪内容可被还原

  •  
  •   tracert 2023-03-23 08:58:03 +08:00 5312 次点击
    这是一个创建于 940 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言    2023-03-23 11:13:20 +08:00
    7 楼有补充
    第 2 条附言    2023-03-23 12:22:41 +08:00
    (被迫)再补充,15 楼有傲娇发言(大雾),16 楼有对 1 楼的修正,对 7 楼的汉化
    22 条回复    2023-03-30 15:09:03 +08:00
    nothingistrue
        1
    nothingistrue  
       2023-03-23 09:16:18 +08:00   3
    标题党,撤了吧。两个问题都是图片修改后原图片还保留着,并不是修改后的图片还携带原始信息。
    cherryas
        2
    cherryas  
       2023-03-23 09:31:47 +08:00
    "同时,用户已经上传的图片,也存在被依靠该漏洞复原的可能。"
    TGl2aWQgZGUgZGll
        3
    TGl2aWQgZGUgZGll  
       2023-03-23 09:50:31 +08:00
    @nothingistrue #1 这难道不严重吗?比包含 exif 信息严重多了。exif 最多泄露你的 GPS 位置和手机型号,日期。

    这玩意泄露的可能就是你自己已经马赛克掉的各种敏感信息
    opengps
        4
    opengps  
       2023-03-23 09:52:44 +08:00
    你可以套娃啊,截图之后再截图一次
    cjpjxjx
        5
    cjpjxjx  
       2023-03-23 10:00:49 +08:00
    那么,下图是使用 Win10 截图工具在截图后点击保存,随后裁剪并再次覆盖源文件保存的截图,有人能还原出被我裁剪掉的内容吗

    https://img.cencs.com/images/2023/03/23/O1QP.png
    lambdaq
        6
    lambdaq  
       2023-03-23 10:05:54 +08:00
    @cjpjxjx 楼主标题党忘记说了,仅限 win11 那个工具。。。。
    目测是三哥做的 KPI 应用,编辑新图片后,忘记把老数据截断了。。。
    feedcode
        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
    leafin
        8
    leafin  
       2023-03-23 10:16:24 +08:00 via Android
    如果我没理解错,这两个新闻说的是修改前的原始文件没有删除而是被新文件覆盖,有被还原的可能性。
    我个人理解这种还原需要接触到存储设备,是类似硬盘数据恢复这种操作。
    所以如果把这张图片拷贝/发送给别人,对方是无法还原的
    tool2d
        9
    tool2d  
       2023-03-23 10:21:52 +08:00
    @leafin "所以如果把这张图片拷贝/发送给别人,对方是无法还原的"

    可以还原,你看 7 楼的代码就知道了。只能是 png 。
    newmlp
        10
    newmlp  
       2023-03-23 10:26:18 +08:00
    @leafin 看代码应该不是覆盖旧文件,而是直接在旧文件上重新开始写入新数据
    leafin
        11
    leafin  
       2023-03-23 10:38:37 +08:00 via Android
    @newmlp 所以文件还是同一个,不是新建一个文件?
    newmlp
        12
    newmlp  
       2023-03-23 10:50:19 +08:00   1
    @leafin 可能文件句柄都是同一个,然后 seek 0 开始写入新数据,啊哈哈哈
    oldshensheep
        13
    oldshensheep  
       2023-03-23 11:07:34 +08:00 via Android
    改原文件的话,打开文件用 r+,然后读取数据,删除全部数据,写入新数据。
    正确做法应该是 seek(0),然后 truncate()。

    之前开发就遇到这个问题。。。。
    oldshensheep
        14
    oldshensheep  
       2023-03-23 11:11:00 +08:00 via Android
    @cjpjxjx 这个需要知道裁剪前原图的大小,用 7 楼的 app 那个链接,或者 Python 代码试试
    nothingistrue
        15
    nothingistrue  
       2023-03-23 11:25:26 +08:00
    @TGl2aWQgZGUgZGll #3 以楼主两个链接的对应内容来看,问题是,本地文件系统残留原始内容,修改之后的文件是没有残留的,那就自然不严重。当然看 7 楼贴出英文原文后,问题是修改之后的文件当中,而非本地文件系统残留原始内容,那就是很严重的。这不但表示楼主的两个链接仍然是标题党,还表示特么的是机翻加农场。
    nothingistrue
        16
    nothingistrue  
       2023-03-23 11:35:49 +08:00
    @tracert 再加个附言吧:

    原始链接的内容有问题,1 楼的回复基于原始内容也是错的,问题很严重。7 楼英文的真正意思大致如下。截图修改并保存的时候,在文件系统处理上上用的是追加方式,于是原始内容仍然存在与新文件中。即,修改之后的文件还保留着修改之前文件的完整信息,所以问题非常大。只有 PGN 有此问题,JPEG 无此问题。
    oldshensheep
        17
    oldshensheep  
       2023-03-23 13:33:23 +08:00
    @nothingistrue 其实是覆盖而不是追加,修改后的文件并没有保留着修改之前文件的完整信息,而是保留了没有覆盖的部分信息。
    其实 JPG 保存同样的也是没有调用 truncate ,但是 JPG 不能被复原,是因为 JPG 压缩过程有熵编码,而它的编码信息在文件头部,而软件是从文件头部覆写的,所以就不能复原了。
    jhdxr
        18
    jhdxr  
       2023-03-23 15:35:46 +08:00
    @cjpjxjx 按照 7L 的工具还需要屏幕分辨率,我盲猜了一个 2560*1440 (从你截图的内容上预估的),但失败了
    crokily
        19
    crokily  
       2023-03-23 20:08:36 +08:00
    我拿 ios 的截图试了下
    截图,裁剪成四分之一大小
    然后进入图库,此时该图确为四分之一大小,编辑该图,右上角就有一个复原按钮
    点复原,图片就变成了原大小。
    这说明 ios 的截图裁剪也是有保留原图信息的
    2le
        20
    2le  
       2023-03-24 10:20:21 +08:00
    看了下代码和原帖,似乎只要存在未被破坏的 IDAT 数据块,就可以实现部分复原。我本地验证了下,只要确保图片宽度是正确的(高度不是必须),就可以实现图片复原。图片宽度可以通过递增尝试,写个遍历脚本,成功率应该挺大的,拿 4k 分辨率来算,只需要尝试 (3840-截图后宽度) 次。
    2le
        21
    2le  
       2023-03-24 12:52:58 +08:00
    @2le 再补充下:但由于 PNG 是先编码压缩再按顺序分块,所以在丢失了部分前置的 IDAT 数据块后,仅依靠尾部的 IDAT 数据块,是存在一定几率复原失败的。
    camillo
        22
    camillo  
       2023-03-30 15:09:03 +08:00
    @crokily 微软的我不评价 iOS 的 Photos 非破坏编辑这个是 feature 如果你把这张剪裁过的照片分享出去了并不能被别人复原……
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2677 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 13:52 PVG 21:52 LAX 06:52 JFK 09:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86