pkuanvil
    • 版块
    • 标签
    • 帮助
    • 注册
    • 登录

    Windows 的截图工具得到的截图可能包含整个屏幕

    Computer
    2
    6
    684
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • wumingshiW
      wumingshi
      最后由 编辑

      Twitter 用户 David Buchanan 提到,Windows 的截图工具也存在同样的问题:即使只在工具中框选了部分区域,依然可能从源文件还原出整个屏幕的截图。
      https://twitter.com/David3141593/status/1638222624084951040
      我看不懂这里具体说的是什么,有人能解释一下吗

      ? 1 条回复 最后回复 回复 引用 0
      • ?
        游客 @wumingshi
        最后由 编辑

        @wumingshi 就是说你以为你把截图的其他部分裁剪掉了,但是截图的工具的实现有bug,导致信息没删除干净

        1 条回复 最后回复 回复 引用 0
        • ?
          游客
          最后由 编辑

          这个漏洞不仅仅影响裁剪图片,“另存为”功能也有类似问题,比如说你把文件A另存为已有的文件B,修图工具提示文件B已存在,然后你确认我要覆盖。这个时候正确的实现应该是B的信息完全消失,只留下A的信息(编程上叫 truncate,linux上面open系统调用的O_TRUNC参数就是干这个的,打开一个已有文件之前先抛弃它的所有内容,参照 man 手册: https://man7.org/linux/man-pages/man2/open.2.html )。但是如果你打开文件的时候没有截断已有的文件内容,而是直接在原来的文件上覆盖写入,那么没被覆盖到的部分就会留下来,造成信息泄漏。

          Pixel 图片编辑器的问题是 Android 10 引入的新 API 删除了 truncate 的行为,这个是有安全隐患的,但是 Google 发布 Android 10 的时候没有把它作为重大变动列出,导致以前用老 API 的开发者很可能不知道行为变了(Pixel 是 Google 亲生的了,他们都不知道的话可以想象很多开发者都不知道)。而 Windows 11 的图片编辑器的问题倒不是删除了 truncate 的行为,而是 Windows 的默认选项一直都是不开启 truncate(不过 linux 上面也是),然后可能开发这个编辑器的程序员水平不足,没有打开 truncate 的选项

          “Always remember to truncate your files when you save them, fellow programmers.“ -- Twitter 上面 Chris Blume 的警告

          1 条回复 最后回复 回复 引用 0
          • ?
            游客
            最后由 编辑

            Windows 截图的行为可能不是只留下你需要的部分,而是一开始就无条件留下全屏幕,等用户去裁剪,裁剪以后再修改原始文件。这样做其实是合理的(因为用户可能会频繁的变动裁剪区域,如果只留下一开始的区域的话,那么用户改了以后就还得重新截图),但是前提是程序员正确的去掉了多余的信息,如果没有正确 truncate 的话就会造成信息泄漏

            wumingshiW 1 条回复 最后回复 回复 引用 0
            • wumingshiW
              wumingshi @游客
              最后由 编辑

              感谢解释。作为小白再请教一下,如果截图上传到像未名树洞这样的会把图片压缩一次的网站,那么截图还能还原出部分原图吗?

              ? 1 条回复 最后回复 回复 引用 0
              • ?
                游客 @wumingshi
                最后由 编辑

                @wumingshi 不好说,我只能说压缩算法设计正确的话是不能还原出部分原图的,但是各个网站的算法能不能做到这一点我就不清楚了,没研究过

                1 条回复 最后回复 回复 引用 0
                • 1 / 1
                • 第一个帖子
                  最后一个帖子