SecurityRonin/apfs-forensic

GitHub: SecurityRonin/apfs-forensic

一个纯 Rust 编写的 APFS 文件系统取证分析库,提供从底层结构解析到异常检测审计的完整能力。

Stars: 0 | Forks: 0

# apfs-forensic [![apfs-core](https://img.shields.io/crates/v/apfs-core.svg?label=apfs-core)](https://crates.io/crates/apfs-core) [![apfs-forensic](https://img.shields.io/crates/v/apfs-forensic.svg?label=apfs-forensic)](https://crates.io/crates/apfs-forensic) [![Docs.rs](https://img.shields.io/docsrs/apfs-forensic)](https://docs.rs/apfs-forensic) [![Rust 1.85+](https://img.shields.io/badge/rust-1.85%2B-orange.svg)](https://www.rust-lang.org) [![License: Apache-2.0](https://img.shields.io/badge/License-Apache--2.0-blue.svg)](LICENSE) [![Sponsor](https://img.shields.io/badge/sponsor-h4x0r-ea4aaa?logo=github-sponsors)](https://github.com/sponsors/h4x0r) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/456960d3fd175935.svg)](https://github.com/SecurityRonin/apfs-forensic/actions) [![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance) [![Security advisories](https://img.shields.io/badge/advisories-clean-success.svg)](deny.toml) **一个从头编写的 APFS 读取器和分级异常审计器 —— 通过路径导航 Apple File System 容器、卷和快照,并呈现“干净”的 macOS 挂载旨在隐藏的快照和密封卷篡改、可恢复的已删除记录、object-map 不一致以及加密状态。** 一个工作区,两个 crate: - **[`apfs-core`](https://crates.io/crates/apfs-core)** —— 读取器:NXSB container + checkpoint ring、object map、B-tree、APSB 卷、file-system 记录 (`j_key`)、文件区、扩展属性、快照、space manager、encryption-state,以及在任意 `Read + Seek` 源上进行透明的 **decmpfs** 解压。无 `unsafe`,无 C 绑定。(作为 `apfs_core` 导入。) - **[`apfs-forensic`](https://crates.io/crates/apfs-forensic)** —— 审计器: 将解析后的 APFS 结构转化为分级的 [`forensicnomicon::report::Finding`](https://crates.io/crates/forensicnomicon)s, 从而使 APFS 卷的异常与 partition 和 container 层统一聚合。 ## 审计 APFS 容器 ``` [dependencies] apfs-forensic = "0.1" # pulls in apfs-core ``` ``` use apfs_core::ApfsContainer; use apfs_forensic::{audit_container, Source}; use forensicnomicon::report::Observation; let container = ApfsContainer::open(std::fs::File::open("disk.img")?)?; let src = Source { analyzer: "apfs-forensic".into(), scope: "APFS".into(), version: None }; for anomaly in audit_container(&container) { let finding = anomaly.to_finding(src.clone()); println!("[{:?}] {} — {}", finding.severity, finding.code, finding.note); // e.g. [Some(High)] APFS-SEALED-VOLUME-BROKEN — im_broken_xid set at xid … } # Ok::<(), apfs_core::ApfsError>(()) ``` ## 信任但验证 无 panic(`unsafe_code = "forbid"`、带边界检查的读取器、带范围检查的 length/offset/count 字段、限制上限的分配、带循环保护的树遍历), 经过 fuzz(每个解析的结构都有一个 cargo-fuzz 目标 + 一个全流水线目标),并且 已针对**真实工件**进行验证 —— macOS 本身(只读挂载并 diff)、 The Sleuth Kit `fsstat`/`fls`/`istat`、`fsapfsinfo` (libfsapfs) 和 `apfsck` (apfsprogs)。参见 [`docs/validation.md`](docs/validation.md)。 [隐私政策](https://securityronin.github.io/apfs-forensic/privacy/) · [服务条款](https://securityronin.github.io/apfs-forensic/terms/) · © 2026 Security Ronin Ltd
标签:APFS, Rust, 可视化界面, 异常分析, 数字取证, 文件系统, 网络流量审计, 自动化脚本, 通知系统