惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Hacker News: Front Page
S
Secure Thoughts
N
News | PayPal Newsroom
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Threatpost
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
A
Arctic Wolf
Cisco Talos Blog
Cisco Talos Blog
V2EX - 技术
V2EX - 技术
L
LINUX DO - 热门话题
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Proofpoint News Feed
TaoSecurity Blog
TaoSecurity Blog
N
News and Events Feed by Topic
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
NISL@THU
NISL@THU
H
Heimdal Security Blog
Webroot Blog
Webroot Blog
Martin Fowler
Martin Fowler
The Hacker News
The Hacker News
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
A
About on SuperTechFans
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
Vercel News
Vercel News
Blog — PlanetScale
Blog — PlanetScale
Google Online Security Blog
Google Online Security Blog
Schneier on Security
Schneier on Security
Cyberwarzone
Cyberwarzone
小众软件
小众软件
V
V2EX
K
Kaspersky official blog
Security Archives - TechRepublic
Security Archives - TechRepublic
博客园 - 三生石上(FineUI控件)
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
C
Cisco Blogs
S
Schneier on Security
Recorded Future
Recorded Future
阮一峰的网络日志
阮一峰的网络日志
AI
AI
Microsoft Security Blog
Microsoft Security Blog
H
Help Net Security
Simon Willison's Weblog
Simon Willison's Weblog
I
InfoQ
G
Google Developers Blog
博客园_首页
Hugging Face - Blog
Hugging Face - Blog

Kenvix's Blog

实现带有Nvidia GPU+Rootless Podman+Docker+Systemd+自动驱动注入支持的systemd nspawn容器 | Kenvix's Blog 手动保留常用端口,解决 Windows 端口被 Hyper-V / WinNAT 占用的问题 免Telent/TTL屏蔽运营商新版光猫的远控、TR069和RMS,获取动态随机超级管理员密码并固化权限 | Kenvix's Blog 在Windows下实现WireGuard动态DNS解析(DDNS)的正确方法:避免无意义的开销 | Kenvix's Blog OpenWRT/DNSMasq 配置DHCP静态路由主动推送 实现流量直达和旁路由流量零代价分载 | Kenvix's Blog 解决 Windows 打开视频/图片文件夹很慢的问题 | Kenvix's Blog AltA2DP - 向支持Sony LDAC协议的耳机提供Windows下蓝牙LDAC音频编码器支持 | Kenvix's Blog (2024更新)修复黑群晖 DSM7.0 + Btrfs 存储空间/磁盘损毁/堪用 的问题 校园网白嫖思路分享:局域网中转-不花钱、不认证、高速上网 | Kenvix's Blog 在 Windows 上配置网卡多个 VLAN、多个虚拟网卡、实现单线多拨网速叠加(无需驱动支持) | Kenvix's Blog 解决视频彩铃、语音通话自动转视频通话导致打电话自动挂断的问题 | Kenvix's Blog 超低成本廉价考研教程:如何用小于¥500甚至¥300的开销考个研 | Kenvix's Blog 在 Ubuntu 21.10 上启用蓝牙 LDAC/AAC/AptX 高质量音频编码支持 在 VMware Workstation 桥接模式的网卡上让虚拟机使用 VLAN 的正确方法 在 Windows 上设置 NAT 或网络共享的正确方法——避免Wi-Fi热点无法使用 自编译 红米 AC2100 OpenWRT R21.7.26 Linux 内核结构和子系统简介 | Kenvix's Blog Java 快速读取文本 (算法竞赛适用) | Kenvix's Blog 利用 ThreadLocal + Lambda,实现有状态变量的单例模式 | Kenvix's Blog 状态压缩的动态规划问题:骨牌完全覆盖棋盘问题 | Kenvix's Blog 我的 Windows 10 2004 新增 Bug 解决办法记录 解决 Android Studio 及 IDEA 中 Gradle 错误信息乱码的问题 Kotlin 的那些骚操作 | Kenvix's Blog 在普通的 Gradle Java/Kotlin 项目中使用 BuildConfig 修复国行 MIUI 打开 Google Play 始终提示 DF-DFERH-01 的问题 解决 VSCode 持续调用 WMIC 导致一个 CPU 核心完全被占满的问题 扔鸡蛋问题 | Kenvix's Blog 计算机幻觉从入门到入土 | Kenvix's Blog Java 注解预处理 Annotation Processing & 代码生成 Ubuntu 上通过以太网分享网络连接(NAT) | Kenvix's Blog Windows 选择指定的网卡来开承载网络型热点 | Kenvix's Blog 修复升级 Windows10 版本后所有内置应用闪退+第三方应用参数错误的问题 | Kenvix's Blog 配置用于 Gradle6.x + MySQL 8 的 jOOQ 3.14 代码自动生成 (已更新) 修复 Windows 环境下的程序访问 WSL 中的 MySQL 提示 Access Denied 的问题 修复 WSL 下 PHP+FastCGI 卡死的问题 使用任意磁盘或路径保存 Windows 文件历史记录 | Kenvix's Blog [1.12.2+Mod] MoeCraft :: 自由开放的科技向公益 Mod 服务器 Kenvix's Blog 禁用使用Intel核显的Windows笔记本自动调节亮度功能 | Kenvix's Blog 真正实现Minecraft高级登录(外置登录)的几种方案 | Kenvix's Blog 谈谈神舟的两艘贼船,Z7M-KP7S1 / Z7M-KP7SC USBCopyer: 插上U盘自动按需复制文件 | Kenvix's Blog USBCopyer 回调功能详细说明 | Kenvix's Blog C# 实现自定义"应用程序设置"的配置文件(user.config)存储路径 | Kenvix's Blog Win10 资源管理器为所有格式激活“编辑”按钮并修改文本文件“编辑”按钮的编辑器 | Kenvix's Blog 留言板 | Kenvix's Blog 又一次 Hello world | Kenvix's Blog Java 学习笔记 (仍在更新) | Kenvix's Blog 在Win10 Pro下挂载NFS(网络文件系统) | Kenvix's Blog Nginx 反向代理 Aria2 JSONRPC | Kenvix's Blog (Android6.0~9.0) 清除锁屏密码 | Kenvix's Blog WordPress 更换站点地址后批量修改文章/评论中的旧地址 | Kenvix's Blog 修复一加3/3T因固件过老导致刷入ROM时提示错误7的问题 | Kenvix's Blog 修复Android DM-Verity 警告 | Kenvix's Blog 贴吧云签到 资源索引(下载|文档|插件) | Kenvix's Blog 继续监控!使用树莓派+Motion实现实时视频监控并通过浏览器查看 | Kenvix's Blog 自动获取Pixiv每日排行榜第一张图片(600x600 | 可用于博客背景图) | Kenvix's Blog 使用树莓派实现定时拍照监控并发送邮件到邮箱 | Kenvix's Blog 好压 V2.7 Beta1 绿色版——功能强大,良心的压缩软件 | Kenvix's Blog 任意语言实现读取压缩包注释 | Kenvix's Blog 自己实现QQ群自定义分享(管理员开启了群交易?) | Kenvix's Blog MoeCDN - 加速Gravatar/GoogleAPIs等无法在国内访问的资源 | Kenvix's Blog [Minecraft] WebLogin-连接到你的服务器来检查玩家是否可以登录 | Kenvix's Blog Android卡刷包提示This package is for device: ... this device is ...的解决方案 Kenvix's Blog 给EMLOG评论框加上复选框[√]防止垃圾评论 | Kenvix's Blog 欢迎使用emlog | Kenvix's Blog
利用Windows卷影副本(Volume Shadow)找回被覆盖和删除的数据 | Kenvix's Blog
2024-01-04 · via Kenvix's Blog

Windows默认启用的系统恢复机制会定期创建卷影副本,创建的时机通常为安装或卸载软件以及系统更新。卷影副本 (Volume Shadow) 实际上就是我们在 Linux 上经常提到的 “快照(Snapshot)”,它利用写时复制 (CoW) 机制为我们提供了文件系统在某个时间点的一个状态的视图。通过利用这个视图,我们可以找回近期不慎删除或被覆盖的数据,也可以用于某些电子取证场景。实际上,系统恢复就是利用快照机制还原文件到先前某个状态实现的。

注意: 由于卷影副本存在一个严重的bug, 该方法并不可靠!找回的文件数据可能不完整,或需要手动拼接。该方法仅供紧急情况或取证场景使用,切勿以此代替备份软件。

前提条件: 系统恢复未被禁用、文件系统为NTFS、存在可用的系统恢复还原点

利用软链接将卷影副本链接到常规磁盘分区下面,就可以访问这些过去时间点的文件系统视图了。

方法

NirSoft搞了个小工具可以浏览卷影副本,不过它实在是有够难用,这里就详提了,不过有兴趣的话可以在这里下载

在本文,我们直接将卷影副本挂载到文件系统下。

挂载卷影副本

  1. 打开管理员 PowerShell:
  2. 执行 vssadmin list shadows,你将得到类似的输出:
# vssadmin list shadows
vssadmin 1.1 - 卷影复制服务管理命令行工具
(C) 版权所有 2001-2013 Microsoft Corp.

卷影副本集 ID: {417b9ac4-5e82-4687-9ee5-83b5336d938b} 的内容
   在创建时间: 2023/12/27 15:02:31 含有 2 个卷影副本
      卷影副本 ID: {73db4f82-8385-4d31-961e-d2580f7e18e7}
         原始卷: (C:)\\?\Volume{d95a35be-bbe1-441e-9d96-18000983ef7e}\
         卷影副本卷: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2
         源起机器: REVO
         服务机器: REVO
         提供程序: 'Microsoft Software Shadow Copy provider 1.0'
         类型: ClientAccessibleWriters
         属性: 持续, 客户端可访问, 无自动释放, 差异, 自动还原

      卷影副本 ID: {76f24a70-defe-4d38-9864-538077402122}
         原始卷: (F:)\\?\Volume{2d738c4b-1e6e-416e-bc9b-d15d512cfe98}\
         卷影副本卷: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy10
         源起机器: REVO
         服务机器: REVO
         提供程序: 'Microsoft Software Shadow Copy provider 1.0'
         类型: ClientAccessibleWriters
         属性: 持续, 客户端可访问, 无自动释放, 差异, 自动还原
  1. 注意”原始卷:” 一列表示你的磁盘分区根据原始卷和日期,找到你想要挂载的卷影副本
  2. 复制 “卷影副本卷” 后面的一串 UNC 路径,我们以第二个为例,复制:\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy10
  3. 执行以下命令将卷影副本挂载到文件系统,在本文中,我们将其挂载到 C:\Mounts\HarddiskVolumeShadowCopy10,注意要把 \\? 替换为 \\. ,并在末尾补上一个反斜线:
# 首先自行创建一个文件夹 C:\Mounts
# 注意把 \\? 替换为 \\. 并在末尾补上一个反斜线
New-Item -Path C:\Mounts\HarddiskVolumeShadowCopy10 -ItemType SymbolicLink -Value \\.\GLOBALROOT\Device\HarddiskVolumeShadowCopy10\

预计得到以下输出:

    目录: C:\Mounts


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----l          2024/1/4     13:47                HarddiskVolumeShadowCopy10
  1. 打开目录 C:\Mounts\HarddiskVolumeShadowCopy10,你将看到卷影副本的文件系统视图,你可以在这里找回被覆盖或删除的文件。注意核对文件内容是否有损坏,卷影副本中的文件可能会出现以簇(4KB)为单位的连续静默损坏,这是卷影副本的一个严重bug所致,一定要注意核查文件内容!!但如果文件内容没有出现 4KB 为单位的连续 0x00NUL 则通常没有问题。

卸载卷影副本

用完了建议卸载卷影副本。卸载很简单,无需打命令,直接打开资源管理器删除 C:\Mounts\HarddiskVolumeShadowCopy10 即可。

常见问题

  1. 挂载时提示 “找不到路径“\.\GLOBALROOT\Device\HarddiskVolumeShadowCopy10”,因为该路径不存在”:你要把 \\? 替换为 \\. ,并在末尾补上一个反斜线

  2. 文件复制出来是一大堆 0x00NUL

恭喜你,该卷影副本关于的这个时间点的文件的数据已经从硬盘上完全消失了,没办法找回它,这也就是为什么我说这玩意不靠谱也就救急用。关于这个问题,请详见这个讨论贴