#journal #file #filesystem #usn #parse #system #extract

bin+lib usnrs

解析 USN 日志文件的工具和库

1 个不稳定版本

0.1.0 2023 年 10 月 19 日

#1903解析实现

Apache-2.0

18KB
333

usnrs - USN 日志解析器

该项目是对 $UsnJrnl:$J 文件的解析器,该文件跟踪文件系统在文件级别的更改。它只处理我们经验中最常见的 USN_RECORD_V2 记录。

该工具还可以可选地使用 MFT 文件来尝试重建日志中提到的文件的完整路径。

其他类似项目

该项目是用 Rust 编写的,公开了用于处理 USN 日志文件的二进制文件(usnrs-cli)和可以在其他应用程序中使用的库(usnrs)。

安装

您需要一个 Rust 编译器和 Cargo 包管理器来构建此项目。这两个都可以通过 rustup 自动安装。

或者,您可以使用 nix-shell 自动设置所有这些。

构建项目就像运行

$ cargo build --features=usnrs-cli --release

用法

usnrs-cli 二进制文件可用于解析 $UsnJrnl:$J 文件并输出提取的 USN 记录。USN 日志文件是一个 稀疏文件,这意味着它通常大部分是空的(填充了 0x00 字节)。

一些取证获取工具只能提取非空数据,而其他工具获取完整的、大部分空的文件。`usnrs-cli` 支持这两种类型的文件。

基本用法

$ usnrs-cli PATH-TO-USNJRNL-J

输出文件格式类似于USN-Journal-Parser,格式为时间戳 | 文件名 | 属性 | 原因

Body文件格式输出

$ usnrs-cli -f bodyfile PATH-TO-USNJRNL-J

Body文件格式(版本3.X)输出文件,适用于mactime或其他工具。

完整路径重建

如果您还有从提取USN日志的磁盘的主文件表文件,您可以将其作为选项提供以重建每个文件的完整路径。

$ usnrs-cli --mft PATH-TO-MFT PATH-TO-USNJRNL-J

路径重建基于USN记录中存储的MFT条目编号。已设置简单检查以防止工具在处理重新分配的条目编号时(例如处理已删除的文件时)给出错误的路径。

手动指定起始偏移量

为了更快地处理完整稀疏文件,usnrs-cli从给定文件的末尾开始扫描记录列表的开始。虽然在我们测试期间这似乎相当稳健,但这可能会导致错误的起始偏移量,从而导致解析条目错误。

如果您观察到这种行为,可以使用--start参数指定第一个记录的起始偏移量。这个偏移量可以通过在十六进制编辑器中查看文件并手动搜索第一个记录来找到。

$ usnrs-cli --start OFFSET PATH-TO-USNJRNL-J

依赖项

~10-17MB
~182K SLoC