LovelyCarveCLI:让取证能力进入终端、脚本与AI工作流"

admin 2026-10-22 11:58:36 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

LovelyCarve CLI:让取证能力进入终端、脚本与 AI 工作流

原创

b3nguang
b3nguang

猫捉鱼铃酒吧

2026年10月21日 08:08
湖北

去阅读

开发 LovelyCarve 的时候,我一直希望取证能力能进入更多工作场景:

  • 在桌面上交互分析
  • 在终端里快速查询
  • 用脚本处理重复任务
  • 交给 AI 代理完成连续的分析流程

为此,LovelyCarve 提供了一个独立的命令行程序:lovelycarve-cli。

它增加了一个命令行入口。它把取证能力整理成一套容易发现且可以组合,适合自动化,并且保留证据边界的接口。

同一套取证能力,多种工作入口。
每一次调用,都能被理解、组合和检查。


先说一个判断:接入商业软件的 AI,可能是在给厂商打黑工

这两年,商业取证软件陆续加上了 AI 功能:智能摘要和自动分类、对话式检索,以及一键生成报告……看起来很方便。

但仔细看会发现,这些 AI 和厂商的产品深度绑定:

  • 它只能读取这个平台解析出来的数据
  • 它只能在这个平台的界面和工程格式里工作
  • 它能做什么、不能做什么,由厂商的授权决定

当我们把这样的 AI 接进自己的工作流时,事情就变味了。

我们写的提示词、调好的流程,以及整理的字段映射和积累的操作经验,全都依附在厂商的平台上。投入越多,离开的成本越高。 这些成果不属于我们,也带不走。

更进一步,我们的每一次使用和反馈、纠错,都在帮厂商打磨产品、验证场景并丰富生态,让它的护城河更深。而我们自己的工具链,没有因此多出任何一项可以独立运转的能力。

我们付了授权费,
又贡献了经验和工作流,
最后换来的,是更难离开的平台。
这就是“给厂商打黑工”。

黑盒 AI,还会削弱核验能力

取证的底线是每个结论都能回溯到证据。

如果 AI 读取的是黑盒解析的结果,又用流畅的语言把它包装出来,那么输出看起来往往比原始数据更确定。可一旦追问:

  • 这条记录从哪里来?
  • 时间为什么这样解释?
  • 没找到某项数据,是源里没有,还是格式不支持或解析失败,还是扫描不完整?

答案往往无从查起。

Agent 需要能回到原始字节、源记录和独立读取结果去复核,不能只相信平台给出的答案。

所以,Agent 要建立在自己掌握的工具链上

AI 应该由我们自己来编排,工具只负责提供可调用且可核验、可替换的取证能力。我希望 Forensics Agent 积累下来的,是真正属于自己的东西:

  • 清晰的工具契约
  • 可导出的结构化结果
  • 可追溯的源证据
  • 可独立运行的验证样本

这样,经验沉淀在自己的工作流里,换模型、换工具、换平台,都不会从零开始。

LovelyCarve CLI 正是按这个思路设计的。它把取证能力做成任何 AI 都能直接调用的接口,没有再做一个封闭的 AI 功能,包括可发现的命令和明确的请求结构,以及独立的运行入口与带读取审计的结果。AI 由你选,工作流归你所有。

下面这七个设计,都服务于这个方向。


01|共用取证后端,两个入口行为一致

CLI 和桌面端共用同一套 Rust 取证后端,直接调用相同的证据读取器和案件管理、文件系统解析,以及搜索、时间线和插件任务能力。

读取器的修复、核心能力的改进,可以同时惠及两个入口,避免分别维护两套实现造成行为差异。

同时,CLI 会自行初始化后端状态,构建时不链接 Tauri、WebView 或桌面窗口运行时。它有独立的进程和生命周期,分析流程可以直接在终端和脚本中跑起来。

02|统一语法,学会规则就能推测用法

所有命令都遵循 “集合 → 子集合 → 动词” 的结构:

  • images

管检材,files 管文件,cases 管案件,tasks 管任务
* get

查看单个对象,list 列出对象,delete 删除

lovelycarve-cli images open \"D:\\evidence\\disk.E01\" lovelycarve-cli --image \"D:\\evidence\\disk.E01\" files list --path /

掌握一组规则,就能推出其他命令怎么写。这降低了使用者的记忆成本,也让脚本作者和 AI 代理更容易准确构造命令。命令越来越多时,这套约定依然是理解新功能的基础。

03|完整的发现路径,功能再多也找得到

  • cli search

:用中英文任务描述查找命令
* docs search

:搜索随程序嵌入的文档
* schema

:查看命令的参数结构

使用者可以沿着 “找能力 → 看说明 → 确认参数 → 执行” 一步步探索,不必先读完整份手册。命令和文档搜索都在本地完成。

图 1 · 通过中文任务描述搜索命令,并检查请求参数结构。

嵌入的文档随程序版本一起发布,能力说明和对应版本的实际行为始终保持一致。

04|面向 AI 代理,落实到接口细节

  • schema

提供程序可读的参数结构
* JSON 提供结构化结果
* --fields

只返回本次需要的字段,同时保留分页元数据

AI 代理可以先搜索、再查看请求结构、最后执行,不必读完整份帮助和大量无关结果。

CLI 还能导出 MCP 工具定义,供外部 MCP 服务器封装。工具发现、参数构造、结果读取都有明确依据,每一步调用都便于检查。


实测:用一份 NAS 检材走一遍真实流程

这次用的是“2026 精武杯”物联网取证 NAS 目录中的五份 E01:一份系统盘,四份数据盘。

我在一个独立命名会话中加载检材,然后运行 raid detect。后端给出的结果是:

  • 四盘 RAID5 候选布局
  • 条带块大小(chunk)512 KiB
  • 组装卷逻辑容量 32,183,943,168 字节
  • 识别到 ext4 文件系统

图 2 · 四盘 RAID5 候选布局与 ext4 识别结果;heuristic=True 表示启发式推定。

注意结果中的 heuristic: true:这个布局来自启发式推定。后续的目录浏览和文件读取验证了部分可读内容,但它们各自只是一份证据,并不意味着候选布局已经通过了全盘一致性验证。

选中返回的组装检材 ID 后,就能继续用同一套 files 命令浏览、读取和计算哈希。下面是组装卷内 NAS 目录的实际列表:

图 3 · 在组装卷内浏览 NAS 目录,保留总数、截断状态和分页游标。


05|会话机制,贴合取证工作的连续性

  • 单条命令

:适合临时查询
* 交互式 shell

:适合人工连续浏览,保留当前检材和目录
* 命名常驻会话

:多个普通 CLI 命令复用同一个后台进程,保留检材句柄、读取缓存和组装卷,减少重复初始化;用完显式关闭,释放资源

lovelycarve-cli sessions open exam lovelycarve-cli --session exam images open \"D:\\evidence\\disk.E01\" lovelycarve-cli --session exam files list --path / lovelycarve-cli sessions close exam

面向程序编排,CLI 还提供 JSONL 会话:每行一个请求、每行一个响应,通过 id 关联结果。$ref 可以把上一步的结果直接传给下一步。比如打开检材返回的 ID,可以直接作为后续目录浏览的参数,脚本不用再手工传递状态。

{\"id\":\"image\",\"command\":\"images open\",\"args\":{\"path\":\"D:/evidence/disk.E01\"}} {\"id\":\"roots\",\"command\":\"files list\",\"args\":{\"imageId\":{\"$ref\":\"image#/id\"},\"path\":\"/\"}}

06|并发有边界,结果和进度分通道

JSONL 会话可以通过 --jobs 让经过标记的查询并发执行。切换案件、打开或关闭检材这类会改变上下文的操作则作为屏障,等此前的请求全部完成后再执行。响应按完成顺序返回,调用方通过请求 ID 对应结果。命名常驻会话中的普通请求仍按串行执行。

输出通道也做了分离:

  • 结构化结果(JSON)→ 标准输出
  • 提示、进度、错误 → 标准错误
  • 文件内容等命令可直接输出原始字节
  • 需要结构化进度时,用 --events 单独跟踪

数据和执行过程各走各的通道,管道、日志和自动化程序处理起来都更方便。

07|把一致性和严谨性变成工程约束

接口一致性: 每个注册的后端命令,都必须有对应的 CLI 映射,或者明确说明由哪条命令覆盖。漏接命令、命名违规或参数冲突,都会在构建阶段直接报错。帮助和补全、请求结构与命令分发围绕同一份目录组织,减少长期维护中的接口漂移。

取证严谨性: 结果需要保留读取边界。下面对组装卷内的 config.bin 计算 SHA-256:本次实际读取 9,060 字节,返回摘要,同时列出读取故障和合成字节,以及截断状态。

图 4 · 对组装卷内 config.bin 计算 SHA-256,同时返回本次读取的审计信息。

如果计算哈希时遇到源坏区并容错补零,结果会通过 readFaultsDetected、syntheticBytes 和 badRegions 如实反映,自动化程序需要结合这些字段来判断摘要是否可信。这里的 false 和 0 只描述本次读取,不代表整份检材已经审计完毕。

同样的明确性还体现在其他细节上:

  • 导出时检查目标是否重名
  • --dry-run

可提前展示请求,并对敏感字段脱敏
* 时间显示保留来源,偏移未知的本地时间保持原值


写在最后

写 LovelyCarve,也是希望邀请更多同行,一起参与开源取证套件的开发和使用。

如果你愿意写代码,可以参与读取器和分析插件,以及自动化接口的开发;如果你更熟悉一线取证工作,也欢迎试用工具、反馈问题和补充文档,或者贡献可公开的测试样本和验证方法。每一种参与,都能帮助工具更贴近实际需要。

取证涉及的设备、系统以及数据格式很多,需要不同领域的经验共同积累。更多人参与使用和验证,能让问题更早被发现,让解析方法有更多依据,也让已有成果更容易被后来的开发者和使用者复用。

我希望这些投入能沉淀为开放且可检查、可持续改进的工具和知识,为取证行业的发展提供一份共同的基础。

欢迎一起开发、使用和完善开源取证套件,让经验在行业中共享,让工具在共同参与中进步。

图中 lc 为 PowerShell 短函数,调用 lovelycarve-cli --session wechat-cli-art-1020 -q;不是额外的 CLI 子命令。NAS 截图均来自本次指定检材。

项目:github.com/LovelyTeams/LovelyCarve

LovelyCarveCLI:让取证能力进入终端、脚本与AI工作流" 网络安全文章

LovelyCarveCLI:让取证能力进入终端、脚本与AI工作流"

LovelyCarveCLI将取证能力带入终端、脚本与AI工作流,通过共用Rust后端、统一命令语法、完整发现路径、面向AI代理的接口细节、会话机制、并发边界及工程约束等七个设计,提供可调用、可核验、可替换的取证能力。文章强调AI应由用户编排,避免被商业软件厂商锁定,并实测NAS检材RAID5组装流程验证工具实用性。
Qubic官方钱包弱Seed漏洞,苹果客户端1,404钱包批量被盗事件分析" 网络安全文章

Qubic官方钱包弱Seed漏洞,苹果客户端1,404钱包批量被盗事件分析"

本文分析Qubic官方钱包因Math.random()弱随机性漏洞致苹果客户端1404个钱包被盗约130万美元事件。根因是Apple平台JavaScriptCore的Math.random()种子强度不足,攻击者离线枚举2^32个种子碰撞出私钥。官方已发布v4.26.4修复改用crypto.getRandomValues,建议用户及时更新,并警惕2026年多起弱随机数安全事件。
急!急!急!Typecho1.3漏洞复现与修复" 网络安全文章

急!急!急!Typecho1.3漏洞复现与修复"

Typecho1.3.0存在未认证SSRF漏洞(CVE-2026-7025),由PHP弱类型比较绕过与出站请求无白名单叠加导致,可盲打内网及云元数据。文章完整复现攻击链,并给出Nginx封禁入口与代码补丁两种修复方案,建议优先采用代码补丁根治。
速修|Plex4洞串联未授权RCECVE-2026-96652" 网络安全文章

速修|Plex4洞串联未授权RCECVE-2026-96652"

本文披露PlexMediaServer四个漏洞串联形成的未授权RCE攻击链(CVE-2026-96652),入口为/player/timeline接口的免认证SSRF,串联后可达9.8分危害,PoC已公开且野外已捕获攻击流量。建议立即升级至1.43.3.10861或更高版本,临时缓解措施包括不将32400端口映射公网、加强访问控制与出站限制,并可通过检查访问日志和进程排查是否被入侵。
评论:0   参与:  0