LovelyCarve 开源磁盘取证工具
LovelyCarve 是我 vibe 的一个开源取证工具,主要用在电子数据取证、应急响应和 CTF 取证题上。把镜像加进来,它会认出分区和文件系统,翻文件、搜关键词都在一个窗口里完成,删掉的数据也能试着恢复。读镜像、文件系统和加密卷的代码全部用 Rust 实现,检材从头到尾只读打开。LovelyCarve 10 月 12 日开源,许可证是 AGPL-3.0,可以免费使用。
现在一共有五个版本,按用途挑:
| 版本 |
版本号 |
下载包 |
适合 |
| Tauri 版 |
v1.3.0(稳定版) |
MSI 安装包,约 105 MB |
日常使用,功能最全 |
| GPUI 版 |
v2.0.0-beta.1(测试版) |
7z 便携包,约 17 MB |
想试原生界面 |
| CLI 版 |
v1.3.0 |
ZIP,约 22 MB |
写脚本、批量处理、接编码代理 |
| DSH 插件版 |
1.5.0 |
仓库内源码,需自行生成 |
在用 DeepSeek Harness |
| Python 库 |
v1.3.0 |
wheel,约 7 MB |
在 Python 里直接读镜像 |
Tauri 版和 GPUI 版
两个都是桌面程序,后端和读取器是同一套,区别在界面。Tauri 版的界面用 Vue 3 写,跑在 WebView2 里,下面列的功能它都有。GPUI 版换成了 Rust 原生的 GPUI 界面,不依赖 WebView2,解压就能用。2.0 的开发分支上已经只剩 GPUI 版。
两个版本都有的功能:
- 案件:一个目录就是一个案件,可以登记多份检材,操作审计带哈希链。卷快照和文件索引会保存下来,下次打开直接复用,源镜像暂时不在也能浏览已经索引过的目录和元数据。
- 检材:RAW/DD、E01/Ex01、AD1、VMDK、VHD/VHDX、QCOW2、VDI、DMG 等镜像,文件夹和 ZIP/7z/TAR 压缩包,Docker 镜像,iOS 本地备份,还有 Windows 物理磁盘。分段镜像选第一段,其余分段放在同一目录。
- 文件系统:NTFS、ext2/3/4、FAT/exFAT、APFS、HFS+、XFS、Btrfs、ZFS、ReFS,以及 SquashFS、UBIFS、JFFS2、YAFFS2 等固件里常见的格式,一共三十多种。
- RAID:mdadm 的 linear 和 RAID0/1/4/5/6/10 都能重组,缺盘时可以降级重组,RAID6 缺两块盘也能按校验算回来。Intel RST/VROC 和 PERC、MegaRAID 阵列卡的固件 RAID 按元数据重组。没有 RAID 元数据的成员盘会按 RAID0/RAID5 推算参数。
- 加密卷:BitLocker(密码、恢复密钥、BEK 等方式)、LUKS1/2、VeraCrypt、FileVault 2 和加密的 iOS 备份,另外能浏览 NTFS 卷影副本。解密按需读取,不会先导出一份整卷明文。
- 全局搜索:关键词和正则都支持,编码覆盖 ASCII、UTF-8、UTF-16 和 GBK,可以把删除文件和未分配空间一起搜。命中能跳回源文件,定位到字节偏移。
- 时间线:汇总文件修改时间、插件事件和 NTFS USN 日志。
- 文件恢复:读 FAT、NTFS、exFAT 的删除记录,按引导扇区和残留的
$MFT 重建丢失分区。另有签名雕刻,支持 JPEG、PNG、PDF、ZIP/Office、SQLite 等 14 种格式,恢复时生成 SHA-256 和来源报告。
- 哈希:MD5、SHA-1、SHA-256、SM3,E01 能核对采集时记录的哈希。读到坏扇区会报告补了多少字节的零,短读不会算成完整结果。
- 插件:自带 linuxinfo,提取 Linux 的系统信息、用户、登录记录、服务、定时任务和命令历史。
- 挂载:装了 Dokany 后,可以把卷只读挂成盘符或文件夹。
Tauri 版的预览除了文本和十六进制,图片和音视频可以直接看,PDF、Office 文档也能打开。SQLite 会自动回放 -wal 并恢复删除记录,PE / ELF / Mach-O 有结构视图,预览窗口还能单独拆出来。
GPUI 版还是测试版,和 Tauri 版相比有三点不同:
- 文档、图片、归档这类原始格式的预览,需要另装 Oracle Outside In Viewer 8.5.7 运行库
- SQLite、Realm、PE / ELF / Mach-O 的结构化解析暂时只能在 CLI 里用
- 时间线是按年、月、日统计的事件计数图,没有年度热力图
下面几张是 Tauri 版截图,检材是 2026 精武杯的服务器镜像(Ubuntu 22.04,E01,58 GiB):






CLI 版
lovelycarve-cli 是单独的命令行程序,不带窗口,桌面版的每个后端命令它都有对应的命令。命令按“集合 + 动词”组织,结果以 JSON 写到标准输出,可以直接接管道:
lovelycarve-cli images open "D:\evidence\disk.E01"
lovelycarve-cli --image "D:\evidence\disk.E01" files tree list --path / --depth 2
lovelycarve-cli --image "D:\evidence\disk.E01" files read "/<卷名称>/Users/alice/report.txt" > report.txt
要连续查很多东西,可以开 shell 交互模式,也可以把命令写成 JSONL 交给 session 批量跑。压缩包里还有一个 skills/lovelycarve-cli 技能,复制到 Claude Code、Codex 这类编码代理的技能目录,再把 CLI 所在目录加进 PATH 就能用。代理会照着里面的命令参考和流程说明调用 CLI,结果按小页读取,不会一下子塞满上下文。
预编译包目前只有 Windows x64,Linux 和 macOS 可以从源码自己编译,但我们没有做过完整验证。
DSH 插件版
这是给 DeepSeek Harness(DSH)做的“LovelyCarve 取证模式”。插件包里已经带好 Windows 版 CLI 和运行库,插件宿主、linuxinfo 和上面提到的技能也在里面,装好后在 DSH 里新建对话、选这个模式就能用。
每次调查它都会先建案或打开已有案件,加载检材,等卷索引建好并核对后才开始浏览和分析,建不了索引的卷会记下覆盖范围的限制。它会按问题划定读取范围,没要求校验时也不会自己去算整盘哈希。返回的结果都带来源,包括源检材路径、实际的检材 ID 和文件节点,SQLite 里的记录还附上表名和主键,回头复核比较方便。
Release 里没有打好的 DSH 插件。源码在仓库的 integrations/dsh-lovelycarve 目录,先编译 release 版 CLI 和分析插件,再在仓库根目录运行 just stage-dsh,生成完整的插件目录。
安装时先完全退出 DSH,把生成的插件目录整个复制到 profile 的 plugins 目录下(例如 C:\Users\<用户名>\.dsh\profiles\desktop\plugins\dsh-lovelycarve),在该 profile 的 package.json 里用 link: 加一条指向这个目录的依赖,再把 dsh-lovelycarve 写进 dsh.profile.bundles,按 DSH 的 profile 包管理流程装好依赖后重启。详细说明见插件目录里的 INSTALL.md。
Python 库
v1.3.0 新增了 Python 库 lovelycarve,用 PyO3 封装 Rust 读取器,Python 里可以直接调用。从 Release 下载 wheel,用 python -m pip install <wheel 文件> 安装,需要 CPython 3.10 以上,目前只提供 Windows x64 的 wheel。
from lovelycarve import Image
with Image("disk.E01") as image:
print(image.info.source_format, image.size)
print(image.partitions)
for root in image.children():
for entry in image.children(root):
if entry.is_file:
with image.open(entry) as file:
print(entry.name, file.read(32))
这个库只做只读访问,能打开镜像和压缩包,列出分区和目录,查文件属性,按偏移读字节,打开的文件对象支持 read、seek 和 readinto。案件、搜索和雕刻它都不管,也不能解锁加密卷,这些用 CLI 做。
下载
欢迎回帖反馈,也可以去 GitHub 提 issue。报读取问题时请附上版本和复现步骤,能给一个可以公开的小样本最好。真实检材、案件目录和个人数据请不要上传。