moonD4rk/keychainbreaker-rs

GitHub: moonD4rk/keychainbreaker-rs

keychainbreaker-rs 是一个用于解析和解密 macOS Keychain 文件的 Rust 库和 CLI 工具。

Stars: 4 | Forks: 0

# keychainbreaker-rs [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/286599bb80073800.svg)](https://github.com/moonD4rk/keychainbreaker-rs/actions/workflows/ci.yml) [![crates.io](https://img.shields.io/crates/v/keychainbreaker.svg)](https://crates.io/crates/keychainbreaker) [![docs.rs](https://img.shields.io/docsrs/keychainbreaker)](https://docs.rs/keychainbreaker) [![codecov](https://codecov.io/gh/moonD4rk/keychainbreaker-rs/branch/main/graph/badge.svg)](https://codecov.io/gh/moonD4rk/keychainbreaker-rs) [![dependency status](https://deps.rs/repo/github/moonD4rk/keychainbreaker-rs/status.svg)](https://deps.rs/repo/github/moonD4rk/keychainbreaker-rs) [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE) [![MSRV](https://img.shields.io/badge/MSRV-1.74-blue.svg)](https://blog.rust-lang.org/) Rust 库和 CLI 工具,用于解析和解密 macOS Keychain 文件 (`login.keychain-db`)。 这是 Go 库的 Rust 版本,位于 。加密机制相同;此存储库跟踪 Go 上游的加密正确性,并重新定义了 Rust 语法习惯的表面。 ## 功能 - 使用纯二进制解析器读取 `.keychain-db` 文件——不使用 macOS API,因此它也可以在 Linux 和 Windows 上运行。 - 从密钥链密码(PBKDF2-HMAC-SHA1)或恢复的 24 字节主密钥中解密存储的凭据。 - 提取通用密码、互联网密码、PKCS#8 私钥和 X.509 证书。 - 导出 `hashcat` 模式 23100 / John the Ripper 哈希,用于离线破解——无需密码。 ## Crates | Crate | Purpose | |---|---| | [`keychainbreaker`](crates/keychainbreaker/) | 库。纯 Rust,无 `unsafe`,无平台特定代码。MSRV 1.74。 | | [`keychainbreaker-cli`](crates/keychainbreaker-cli/) | 带有 `dump`、`hash` 和 `version` 子命令的 `keychainbreaker` 二进制文件。MSRV 1.78。 | ## 安装 ``` cargo add keychainbreaker # add the library to your project cargo install keychainbreaker-cli # install the `keychainbreaker` binary ``` ## 快速入门 ### 库 ``` use keychainbreaker::{Credential, Keychain}; let mut kc = Keychain::open_file("/Users/me/Library/Keychains/login.keychain-db")?; kc.unlock(Credential::password("hunter2"))?; for entry in kc.generic_passwords()? { if let Some(pw) = &entry.password { println!("{}: {}", entry.service, String::from_utf8_lossy(pw)); } } ``` 记录类型可以通过默认启用的 `serde` 功能进行序列化。如果您只需要解密,请关闭它: ``` keychainbreaker = { version = "0.2", default-features = false } ``` ### CLI ``` # 将所有内容提取为 JSON(省略 -p 时提示输入密码) keychainbreaker dump -p hunter2 -o dump.json # 相同,带有完整的诊断信息输出到 stderr keychainbreaker dump -p hunter2 -v # 导出可破解的哈希值 — 无需解锁 keychainbreaker hash > keychain.hash hashcat -m 23100 keychain.hash wordlist.txt ``` 错误的密码或缺失的密码仍然会生成仅包含元数据的转储(记录名称和时间戳,没有机密信息),而不是错误。要使用恢复的 24 字节主密钥而不是密码进行解密,请传递 `-k `。 ## 兼容性 - **任何主机操作系统。** 解析器是纯 Rust,从不调用 macOS API,因此复制到 Linux 或 Windows 的 `.keychain-db` 解密方式与在 macOS 上完全相同。 - **macOS 26.4+(v2 密钥链)。** 新的 26.4 安装——或升级到它——会将登录密钥链重新加密为 `blobVersion=2`,将解密绑定到设备的 Secure Enclave。此类密钥链**无法仅从文件和密码中离线解密**;解密需要从原始机器上恢复的 24 字节主密钥,通过 `-k` / `Credential::Key` 提供。较旧的 `blobVersion=1` 密钥链不受影响。 - **JSON 输出与 Go 的比较。** 字节相同,只是这里省略了缺失/零时间戳,而不是作为 `"0001-01-01T00:00:00Z"` 输出。 ## 从源码构建 ``` git clone https://github.com/moonD4rk/keychainbreaker-rs cd keychainbreaker-rs cargo build --workspace # build library + CLI cargo test --workspace --all-features # run the test suite cargo install --path crates/keychainbreaker-cli # install the `keychainbreaker` binary ``` ## 道德和授权 此工具用于授权的安全测试、数字取证和系统上的凭据恢复,您拥有或明确获得访问权限。在大多数司法管辖区,未经拥有权使用它是不合法的,也不是此项目的目的。 ## 许可证 根据 [Apache License, Version 2.0](LICENSE) 许可。与上游 Go 项目相同。
标签:Apache-2.0 许可, Rust 编程, 代码分析, 依赖管理, 凭证管理, 加密解密, 可视化界面, 密码学, 密钥链, 开源框架, 手动系统调用, 持续集成, 数据解析, 文档, 通知系统