tears-mysthrala/Oroitz
GitHub: tears-mysthrala/Oroitz
Oroitz 是一个围绕 Volatility 3 构建的教育性封装工具,通过 CLI、TUI 和 GUI 三种界面降低内存取证的学习门槛。
Stars: 0 | Forks: 0
# Oroitz
Oroitz(巴斯克语中的“记忆”)是一个**围绕 [Volatility 3](https://www.volatilityfoundation.org/) 构建的教育性封装工具**,旨在降低初学者学习内存取证时的入门门槛。它提供了一个共享的 Python 核心库,以及 CLI、Textual TUI 和 PySide6 GUI 前端,用于运行向导式的 Volatility 3 工作流并规范化其输出。
## Oroitz 自动化的工作
- 通过简单的命令或向导界面启动常见的 Volatility 3 插件(进程列表、网络扫描、`malfind`、SID 枚举等),让初学者可以专注于阅读结果,而无需死记硬背 CLI 标志。
- 符号表 / 操作系统检测 —— 完全交由 Volatility 3 的 automagic(自动 magic)处理。
- 将插件输出规范化为 JSON(部分工作流支持 CSV),以便在课堂上更轻松地进行检查。
- 具备持久化、结果缓存和带退避机制的自动重试功能的分析会话,以应对暂时性的 Volatility 故障。
## Oroitz 不做的事
- **它本身不进行内存分析。** 所有结果均来自 Volatility 3。理解每个插件展示的内容——以及它可能在哪里出错——是学生的任务,Oroitz 刻意不掩盖这一点。
- **它不判断系统是否受到威胁。** 没有结论、评分或自动检测逻辑。
- **它不能替代取证方法论**(获取、保管链、文档记录、同行评审)。
- **它不提供内存样本。** 请参阅下方的[内存样本](#memory-samples)。
- **它不是多用户或企业级工具**:没有角色、没有证据管理、也不保证保管链。
### 重要提示:模拟数据回退
当 Volatility 插件执行失败时,对于非敏感插件,Oroitz 会回退到**确定性模拟数据**,这样即使没有可用的运行环境,依然可以探索界面(参见 `docs/adrs/ADR-0004-retry-and-fallback.md`)。通过这种方式生成的结果会在 `ExecutionResult` 模型中被标记(`used_mock`)。与凭据相关的插件(`windows.hashdump`、`windows.cachedump`、`windows.lsadump`)绝不会回退——它们会直接报告失败。在使用 Oroitz 时,在得出结论之前,请务必验证结果是否来自真实的执行过程。
## 归属与许可
Oroitz 中所有的内存分析均由 **Volatility Foundation**( ,)开发和维护的 **Volatility 3** 执行。Volatility 3 根据其自身的许可分发——请查阅 Volatility 3 仓库以了解条款。Oroitz 本身基于 MIT 许可发布(参见 [`LICENSE`](LICENSE))。
## 兼容性
仅支持 `pyproject.toml` 中锁定的版本:
- **Python**:`>=3.11, <3.13`(推荐 Python 3.11;某些 Volatility 3 插件在 3.12 上存在已知问题)
- **Volatility 3**:`^2.26.2`(即 `>=2.26.2, <3.0.0`)
- **GUI(可选依赖组)**:PySide6 `^6.7.0`
超出这些范围的版本未经测试。
## 遥测与日志记录 —— 诚实声明
此代码库中的“遥测”**仅指本地的结构化日志记录**。`oroitz/core/telemetry.py` 会向 stdout 输出 JSON 日志事件(插件开始/成功/失败、重试、持续时间)。**不会有任何数据离开本机**:没有分析后端,没有远程端点,也没有使用情况追踪。
`OROITZ_TELEMETRY_ENABLED` 设置(以及 GUI/TUI 设置中相应的复选框)目前仅用于存储偏好设置——它不会启用任何远程报告,因为报告功能根本不存在。请将其视为一个占位符。
## 可追溯性
为了满足课程作业和实验室可重复性的要求,Oroitz 目前提供:
- **命令日志记录**:在 CLI 执行路径(`oroitz/core/executor.py`)中会记录准确的 Volatility 3 命令行。
- **结构化事件**:插件名称、持续时间、重试次数和错误都会作为 JSON 日志事件输出。
- **结果导出**:规范化后的结果可导出为 JSON/CSV。
- **会话持久化**:会话存储在 `~/.oroitz/sessions` 下。
尚未实现的功能(在 [`ROADMAP.md`](ROADMAP.md) 中跟踪记录):
- 在导出结果中记录 Volatility 3 / 插件版本。
- 用于课程作业提交的单次会话审计文件(包含命令 + 结果 + 环境)。
## 快速开始
1. 安装 Python 3.11 或 3.12,并确保 `python --version` 显示为 3.11.x 或 3.12.x。为了保证与 Volatility 3 插件的最大兼容性,推荐使用 Python 3.11。
2. 按照 中的说明安装 Poetry。
3. 在仓库根目录下,运行 `poetry install` 以创建虚拟环境并拉取依赖。如需使用 GUI,请运行 `poetry install --with gui`。
4. 使用 `poetry shell` 激活 Poetry shell,或者在命令前加上 `poetry run` 前缀。
5. 运行质量检查:使用 `poetry run pytest` 进行测试,使用 `poetry run ruff check .` 进行代码检查。
6. (可选)安装 Volatility 社区插件包,以便使用哈希提取插件:
poetry run python scripts/setup_volatility_plugins.py --dest vendor/volatility_plugins --update-env
这会将 `community3` 包下载到 `vendor/volatility_plugins` 中,并将 `OROITZ_PLUGIN_DIRS` 写入 `.env` 文件。如果下载失败(例如在离线环境中),请手动从 获取压缩包,并将 `OROITZ_PLUGIN_DIRS` 指向解压后的目录。
### 内存样本
**本仓库不包含任何内存镜像** —— 它们体积庞大且可能包含敏感数据。要获取经过批准的教学样本,请结合辅助脚本使用 `assets/samples.json`:
```
# 列出可用示例
python scripts/fetch_samples.py --list
# 下载一个示例到本地 (git-ignored) 的 samples/ 目录中
python scripts/fetch_samples.py --id samsclass-memdump
```
有关出处和许可指南,请参阅 `samples/README.md`。请核实您下载的任何样本的许可和使用条款,切勿将内存镜像提交到 git 中。
### 运行 Oroitz
- **CLI**:`poetry run python -m oroitz.cli --help`
- **快速分诊**:`poetry run python -m oroitz.cli quick-triage samples/your-image.mem --output results.json`
- **账户枚举**:`poetry run python -m oroitz.cli accounts samples/your-image.mem --output accounts.json`
- **TUI**:`poetry run python -m oroitz.ui.tui`
- **GUI**:`poetry run python -m oroitz.ui.gui`(需要 `gui` 依赖组)
工作流注册表(`oroitz/core/workflow.py`)定义了额外的工作流规范(`process_deepdive`、`network_focus`、`malware_hunt`、`timeline_overview` 等),但目前只有 `quick_triage` 和 `account_enumeration` 连接到了 CLI 和输出规范化流程。其余工作流可以在 UI 层中访问,但会产生未经规范化的结果 —— 参见 [`ROADMAP.md`](ROADMAP.md)。
### 构建与打包
Oroitz 可以使用 PyInstaller 打包成独立的可执行文件,以便在课堂上分发。
**在 Windows 上:**
```
.\build.ps1 install
.\build.ps1 build
```
**在 Linux/macOS 上:**
```
make install
make build
```
构建好的可执行文件会放在 `dist/` 目录下。当推送版本标签(例如 `v1.0.0`)时,GitHub Actions 发布工作流会为 Windows、macOS 和 Linux 构建可执行文件,并将它们附加到 GitHub 发布版中(参见 `.github/workflows/release.yml`)。
## 仓库结构
- `oroitz/core/`:协调 Volatility 3 执行、输出规范化、会话、缓存和本地日志记录的引擎
- `oroitz/cli/`:命令行界面(`quick-triage`、`accounts`、`tui`、`gui`)
- `oroitz/ui/gui/`:PySide6 桌面应用程序
- `oroitz/ui/tui/`:Textual 终端界面
- `oroitz/bindings/`:语言 SDK 实验(仅限 Python;Node.js 绑定目前只是一个想法,尚未实现)
- `samples/`:用于存放通过 `scripts/fetch_samples.py` 获取的内存镜像的本地且被 git 忽略的目录
- `tests/`:针对核心、CLI 和 UI 组件的自动化测试
- `docs/`:规格说明、ADR 和面向贡献者的指南(也同步在 [GitHub Wiki](https://github.com/tears-mysthrala/Oroitz/wiki) 上)
## 文档索引
### 用户指南
- [快速开始](https://github.com/tears-mysthrala/Oroitz/wiki/Getting-Started) - 安装与初步分析
- [CLI 用户指南](https://github.com/tears-mysthrala/Oroitz/wiki/CLI-Guide) - 命令行界面使用说明
- [GUI 用户指南](https://github.com/tears-mysthrala/Oroitz/wiki/GUI-Guide) - 桌面应用程序教程
- [TUI 用户指南](https://github.com/tears-mysthrala/Oroitz/wiki/TUI-Guide) - 终端界面指南
- [工作流参考](https://github.com/tears-mysthrala/Oroitz/wiki/Workflow-Reference) - 工作流文档
- [故障排除](https://github.com/tears-mysthrala/Oroitz/wiki/Troubleshooting) - 常见问题与解决方案
### 技术文档
- [产品规格说明](https://github.com/tears-mysthrala/Oroitz/wiki/Product-Specification)
- [核心引擎详情](https://github.com/tears-mysthrala/Oroitz/wiki/Core-Engine-Details)
- [TUI 规划](https://github.com/tears-mysthrala/Oroitz/wiki/TUI-Plan)
- [GUI 规划](https://github.com/tears-mysthrala/Oroitz/wiki/GUI-Plan)
- [工作流目录](https://github.com/tears-mysthrala/Oroitz/wiki/Workflow-Catalog)
- [架构决策](docs/adrs/)(也可在 Wiki 上查看)
- [项目结构指南](https://github.com/tears-mysthrala/Oroitz/wiki/Project-Structure-Guide)
## 安全
有关漏洞报告指南,请参阅 [`SECURITY.md`](SECURITY.md)。
## 许可证
MIT —— 参见 [`LICENSE`](LICENSE)。Volatility 3 保留其自身的许可证;请参阅[归属与许可](#attribution-and-licenses)。
## 发布准备与 CI
位于 `.github/workflows/ci.yml` 的 CI 流水线会运行测试套件和一项轻量级基准测试。使用 `tools/benchmark.py` 可运行本地基准测试并生成 `results/benchmark_report.json`。在标记发布版本之前,请查阅[发布检查清单](https://github.com/tears-mysthrala/Oroitz/wiki/Release-Checklist)。
标签:CLI, GUI, Python, SecList, TUI, Volatility 3, WiFi技术, 内存取证, 教学工具, 无后门, 漏洞挖掘, 逆向工具