#windows-registry #parser #forensics #python-bindings

bin+lib notatin

Notatin 是一个用于解析离线 Windows 注册表文件的 Rust 库

1 个稳定版本

1.0.1 2023 年 8 月 18 日

#790 in 解析实现

Download history 30/week @ 2024-03-13 66/week @ 2024-03-20 37/week @ 2024-03-27 72/week @ 2024-04-03 82/week @ 2024-04-10 35/week @ 2024-04-17 30/week @ 2024-04-24 26/week @ 2024-05-01 24/week @ 2024-05-08 25/week @ 2024-05-15 34/week @ 2024-05-22 23/week @ 2024-05-29 15/week @ 2024-06-05 26/week @ 2024-06-12 37/week @ 2024-06-19 25/week @ 2024-06-26

每月 106 次下载

Apache-2.0

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