1 个稳定版本
1.0.1 | 2023 年 8 月 18 日 |
---|
#790 in 解析实现
每月 106 次下载
410KB
9K SLoC
Notatin
Notatin 是一个用于解析离线 Windows 注册表文件的 Rust 库。它包括库的 Python 绑定(pynotatin)和用于直接处理注册表文件的二进制文件。
特性
- 使用 100% 安全的 Rust 实现,并在 Rust 支持的所有平台上运行(具有 stdlib)。已在 Windows 和 Ubuntu 上进行测试。
- 支持应用事务日志,并恢复已删除和修改的键和值。
- 支持导出到 JSONL、XLSX、TSV 和 Eric Zimmerman 的通用注册表格式(https://github.com/EricZimmerman/Registry)。
- Python 绑定包含在项目中(pynotatin)。
notatin (crate)
notatin
是一个解析离线 Windows 注册表文件的库。
reg_dump (实用工具)
reg_dump
是一个二进制实用工具。它解析注册表文件,或使用 --recurse
参数解析注册表文件的树(可选地提供键路径过滤器)。它还支持恢复已删除和以前的键和值版本。
JSONL 导出 所有 数据。使用 --full-field-info
参数将包括每个字段的文件偏移量信息。
XLSX 和 TSV 导出部分数据;两种输出的数据相同,但 XLSX 包含特定于上下文的外观格式,这在审查恢复数据时非常有帮助。如果您专注于恢复项,则 --recovered-only
参数将仅返回已修改、已删除或包含修改或删除值的项。
通用格式导出通用所需的数据。
Usage: reg_dump [OPTIONS] --input <input> --output <output> -t <TYPE>
Options:
-i, --input <input> Base registry file, or root folder if recursing
-o, --output <output> Output file. or folder if recursing
-t <TYPE> output type [default: jsonl] [possible values: jsonl, xlsx, tsv, common]
-r, --recurse Recurse through input looking for registry files
--recover Recover deleted and versioned keys and values
--recovered-only Only export recovered items (applicable to tsv and xlsx output)
--full-field-info Get the offset and length for each key/value field (applicable to jsonl output)
-s, --skip-logs Skip transaction log files
-f, --filter [<STRING>] Key path for filter (ex: 'ControlSet001\Services')
-h, --help Print help
-V, --version Print version
reg_compare (实用工具)
reg_compare
是一个二进制实用工具。它将比较两个注册表文件,或使用 --recurse
参数比较注册表文件的树(树的结构必须匹配)。默认输出是类似于 Regshot 的差异报告。使用 --diff
参数将以统一差异格式格式化结果。
Usage: reg_compare [OPTIONS] --base <base> --compare <compare> --output <output>
Options:
-b, --base <base> Base registry file or root folder to search
-c, --compare <compare> Registry file or root folder to search for comparison
-o, --output <output> Output file or folder
-r, --recurse Recurse through base and comparison folders looking for registry files; file trees must match
-f, --filter [<STRING>] Key path for filter (ex: 'ControlSet001\Services')
-d, --diff Export unified diff format output
-s, --skip-logs Skip transaction log files
-h, --help Print help
-V, --version Print version
库使用
use notatin::{
err::Error,
parser_builder::{ParserBuilder, ParserBuilderTrait},
};
fn main() -> Result<(), Error> {
let mut parser = ParserBuilder::from_path("system")
.recover_deleted(false)
.with_transaction_log("system.log1")
.with_transaction_log("system.log2")
.build()?;
for key in parser.iter() {
println!("{}", key.path);
for value in key.value_iter() {
println!("\t{} {:?}", value.value_name, value.get_content());
}
}
Ok(())
}
打开文件和迭代结果很简单。默认情况下,迭代是前缀顺序(如上述代码示例所示)。也可以提供后序遍历(子节点在父节点之前)。
for key in parser.iter_postorder() {
//...
}
结果过滤器是可选的,但它们可以加快处理速度,因为 Notatin 会跳过解析不匹配的内容。过滤器可以包括正则表达式和/或字面路径,并在迭代时应用。
let filter = FilterBuilder::new()
.add_literal_segment("control Panel")
.add_regex_segment("access.*")
.add_regex_segment("keyboard.+")
.return_child_keys(false)
.build();
pynotatin(Python 绑定)
有关使用 pynotatin 的详细信息,请参阅 pynotatin README.md。
什么是 Notatin?
Notatin 是葡萄糖氧化酶的另一种名称。葡萄糖氧化酶催化葡萄糖氧化成过氧化氢。它存在于蜂蜜中,因为蜜蜂合成了这种酶并将其沉积在蜂蜜中,在那里它作为天然防腐剂。因此,Notatin 有助于保存蜂箱中的东西。
版权
版权 2023 Aon Cyber Solutions。Notatin 在 Apache 许可证第 2.0 版下授权。
依赖项
~8–19MB
~272K SLoC