YSF-Studio/analysisloom

GitHub: YSF-Studio/analysisloom

YSF-Studio/analysisloom是一款功能全面的法医分析工具,支持多种文件系统分析、证据恢复和案例管理。

Stars: 1 | Forks: 0

# 分析Loom 🔬 [![构建](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a5cbc2136c084910.svg)](https://github.com/YSF-Studio/analysisloom/actions/workflows/build.yml) [![审计](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/12d4539014084912.svg)](https://github.com/YSF-Studio/analysisloom/actions/workflows/audit.yml) [![许可证:MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) ![平台](https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-lightgrey)

AnalysisLoom — three-pane forensic workstation

## ✨ 功能 | 模块 | 状态 | 描述 | |--------|--------|-------------| | **案例管理器** | ✅ 已就绪 | 创建案例,分配操作员,跟踪调查中的证据 | | **NTFS 浏览器** | ✅ 已就绪 | 从磁盘镜像(`.dd`,`.raw`,`.img`)解析 MFT,浏览文件夹树,按父记录过滤 | | **检查器** | ✅ 已就绪 | SHA-256 / SHA-1 / MD5 哈希,文件预览,添加到证据链 | | **时间线** | ✅ 已就绪 | 从 MFT 加载、加密扫描和手动条目生成的按时间顺序的事件日志 | | **文件恢复** | ✅ 已就绪 | 基于签名的恢复(JPEG,PNG,PDF,ZIP,SQLite,ELF,…)并跟踪进度 | | **SQLite 管理器** | ✅ 已就绪 | 浏览表,列,分页行,自定义 `SELECT` 查询 | | **关键字搜索** | ✅ 已就绪 | 在活动案例中搜索证据笔记和发现 | | **关键发现** | ✅ 已就绪 | 对感兴趣文件的标签和注释进行书签 | | **加密卷** | ✅ 已就绪 | 检测 LUKS,BitLocker 指示符和高熵加密区域 | | **报告** | ✅ 已就绪 | 导出带有审计跟踪的 HTML & PDF 案例报告 | | **关于** | ✅ 已就绪 | 版本信息,功能列表,离线/隐私声明 | ### 法医模块 | 模块 | 状态 | 描述 | |--------|--------|-------------| | **注册表分析器** | ✅ 已就绪 | SAM/SYSTEM/SOFTWARE/NTUSER.DAT — USB 历史,UserAssist,Shellbags,MRU,运行键 | | **Windows 实体** | ✅ 已就绪 | 预取,LNK,跳转列表 — Windows 执行跟踪 | | **Windows EVTX 解析器** | ✅ 已就绪 | 安全事件日志 — 4624/4625 登录,4688 进程,4104 PowerShell,7045 服务 | | **macOS 实体分析器** | ✅ 已就绪 | KnowledgeC.db,统一日志 (.logarchive),plist,Spotlight,DataDetectors,TCC | | **Linux 实体** | ✅ 已就绪 | auth.log,audit.log,syslog,journal,cron,.bash_history | | **浏览器实体** | ✅ 已就绪 | Chrome/Firefox/Safari/Edge 历史,SQLite 数据库中的下载 | | **电子邮件法医** | ✅ 已就绪 | PST/OST 邮箱头解析,文件夹发现,消息占位符提取 | | **聊天实体** | ✅ 已就绪 | WhatsApp,Telegram,Signal SQLite 消息数据库 | | **内存桥** | ✅ 已就绪 | 导入 Volatility 3 JSON — 进程和网络连接 | | **YARA 扫描器** | ✅ 已就绪 | 内置恶意软件规则 + 自定义 `.yar` 加载,扫描案例证据 | | **反法医** | ✅ 已就绪 | 时间戳,扩展不匹配,NTFS ADS,零大小异常,删除 MFT 标志 | | **隐写术** | ✅ 已就绪 | LSB 比率,χ² 分析,图像上的元数据异常扫描 | | **NSRL 查找** | ✅ 已就绪 | NIST 哈希集导入 & 已知良好过滤 | | **PCAP 网络分析器** | ✅ 已就绪 | 从数据包捕获重建 TCP/UDP/DNS/HTTP 流 | | **插件 SDK** | ✅ 已就绪 | Rust `ForensicPlugin` trait — 哈希,熵,字符串内置 | | **十六进制搜索** | ✅ 已就绪 | 在证据文件中跨文件搜索字节模式(`hex:FF D8 FF`) | | **跨平台获取** | ✅ 已就绪 | 自动检测 Windows/Linux/macOS 证据文件夹 — 一键扫描所有模块 | | **超级时间线** | ✅ 已就绪 | 多源相关联的时间线(NTFS,注册表,浏览器,YARA,内存,EVTX,PCAP) | | **时间线甘特图** | ✅ 已就绪 | 带有源着色条的甘特图风格多源时间线 | | **证据包导出** | ✅ 已就绪 | ZIP 包 — 证据文件 + SHA-256 清单 + HTML/PDF 报告 | | **已删除恢复** | ✅ 已就绪 | 通过集成恢复从 NTFS 浏览器中删除的文件 | | **主题切换** | ✅ 已就绪 | 亮/暗模式(标题栏中的☀/☾) | | **拖放** | ✅ 已就绪 | 将证据文件拖放到工作区 — 检查器中自动哈希 | ### 平台证据覆盖 | OS | 分析的实体 | |----|-------------------| | **Windows** | NTFS/MFT,注册表分片,EVTX,预取/LNK/Jump Lists,反法医,BitLocker | | **Linux** | auth.log,audit.log,syslog,journal,cron,.bash_history | | **macOS** | KnowledgeC,plist,统一日志,TCC,Spotlight,Safari 历史 | | **所有平台** | 浏览器,聊天(WhatsApp/Telegram/Signal),电子邮件(PST/OST),YARA,恢复,SQLite,PCAP | ### 架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ Titlebar — search, case pill, export │ ├──────────┬──────────────────────────────┬───────────────────┤ │ Sidebar │ Main view (tabbed) │ Inspector │ │ Sources │ NTFS / SQLite / Carving … │ Hash + Evidence │ │ Views │ │ │ │ Evidence │ │ │ ├──────────┴──────────────────────────────┴───────────────────┤ │ Status bar — case stats, file count, audit shortcut │ └─────────────────────────────────────────────────────────────┘ ``` 所有法医引擎都在 Rust 中 **内联运行**(无外部 CLI 依赖)。 ## 🖥️ 截图 ### 案例管理器 创建和切换法医案例。每个案例隔离证据,时间线,书签和审计日志。 | | |:--:| | ![案例管理器](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/acf76f94e8084914.png) | ### NTFS 浏览器 加载磁盘镜像,解析主文件表,浏览重建的目录树。已删除条目被标记。 | | |:--:| | ![NTFS 浏览器](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/82ab5aab8b084917.png) | **使用方法:** 侧边栏 → **添加图像** → 选择 `.dd` / `.raw` / `.img` → 在主面板中浏览文件。单击一行以在右侧面板中检查哈希。 ### 检查器 来自 Rust 后端的实时哈希。使用标签和注释将实体添加到证据链。 检查器面板在上述 NTFS 浏览器截图的右侧可见。选择任何文件或通过 **打开实体** 打开实体以填充哈希和预览元数据。 ### 时间线 从自动和手动事件重建调查时间线。 | | |:--:| | ![时间线](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6d612ff052084920.png) | ### 文件恢复 扫描原始图像中的嵌入式文件签名。支持异步恢复,具有取消和进度跟踪。 | | |:--:| | ![恢复的文件](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d7afeb152f084922.png) | **使用方法:** 在 **来源** 中加载磁盘镜像 → 打开 **恢复的文件** → 设置输出目录 → **开始恢复**。 ### SQLite 管理器 检查磁盘上找到的 SQLite 数据库或作为独立实体打开的 SQLite 数据库。 | | |:--:| | ![SQLite 管理器](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b750de713d084926.png) | **使用方法:** 通过 **打开实体** 打开 `.db` 文件,或在 NTFS 浏览器中选择 `.db` 条目。 ### 关键字搜索 在活动案例中搜索证据和发现。 | | |:--:| | ![搜索](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/57cac4bea2084930.png) | ### 关键发现(书签) 使用严重性着色书签对感兴趣文件进行标记和注释。 | | |:--:| | ![关键发现](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/520fd091ca084931.png) | ### 加密卷 扫描磁盘镜像以查找 LUKS 标头,BitLocker 指示符和高熵加密区域。 | | |:--:| | ![加密](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b845965f71084934.png) | **使用方法:** 加载磁盘镜像 → 打开 **加密** → **扫描加密**。 ### 注册表分析器 解析 Windows 注册表分片(SAM,SYSTEM,SOFTWARE,NTUSER.DAT)并显示 USB 历史,UserAssist,MRU 和其他法医密钥。 | | |:--:| | ![注册表分析器](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/df266b002e084937.png) | **使用方法:** 打开 **注册表** → 指向分片文件或目录 → **分析分片**。 ### YARA 扫描器 内置 YARA 引擎,默认规则以及自定义 `.yar` 加载。扫描证据路径并按严重性标记匹配项。 | | |:--:| | ![YARA 扫描器](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/3f419b0840084940.png) | **使用方法:** 打开 **YARA 扫描器** → 添加路径或从案例证据中选择 → **扫描证据**。 ### 反法医检测 从 MFT 记录或文件路径中检测时间戳,NTFS 替代数据流和扩展不匹配。 | | |:--:| | ![反法医](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/592b3d18a0084943.png) | **使用方法:** 加载磁盘镜像 → 打开 **反法医** → **扫描 MFT 图像**。 ### 浏览器实体 从 Chrome,Firefox,Safari 和 Edge 配置文件中提取浏览历史记录,下载和相关 SQLite 实体。 | | |:--:| | ![浏览器实体](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/28de6ae326084945.png) | **使用方法:** 打开 **浏览器实体** → **扫描浏览器**或指向特定的 `History` / `places.sqlite` 数据库。 ### NSRL 查找 将文件哈希与 NIST NSRL 已知良好数据库进行比较。导入自定义 NSRL 集或使用内置种子。 | | |:--:| | ![NSRL 查找](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d94b12bca0084947.png) | **使用方法:** 在 NTFS 浏览器中选择文件 → 打开 **NSRL 查找** → **查找所选文件**。 ### 内存桥 导入 Volatility 3 JSON 输出并浏览进程,网络连接和插件元数据,而无需离开案例。 | | |:--:| | ![内存桥](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/31a583dec1084949.png) | **使用方法:** 打开 **内存桥** → 粘贴或浏览到 Volatility JSON 导出 → **解析 JSON**。 ### 报告 生成包括证据列表,发现和审计跟踪的 HTML 或 PDF 案例报告。 | | |:--:| | ![报告](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/7bf92ee56b084952.png) | ### 关于 应用程序信息,功能列表和保管链免责声明。 | | |:--:| | ![关于](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/f75b8dc5db084954.png) | ## 🚀 快速入门 **先决条件:** Node.js 20+,Rust 稳定版(1.85+)和平台构建工具: ``` # macOS xcode-select --install # if not already installed rustc --version # install from https://rustup.rs if missing # Linux(Ubuntu/Debian) sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev \ patchelf libssl-dev build-essential pkg-config # Windows # 安装 Rust(https://rustup.rs)和 WebView2(包含在 Windows 10/11 中) ``` ``` git clone https://github.com/YSF-Studio/analysisloom.git cd analysisloom npm install npm run dev # development (alias: npm run tauri:dev) npm run tauri:build # production build ``` 从 **存储库根目录** 运行 — 脚本在根 `package.json` 中定义并委托给 `packages/analysisloom`。 AnalysisLoom 以 **源代码** 分发 — 在 Windows,macOS 或 Linux 上本地构建和运行。未发布预构建的二进制文件。 **构建后的生产二进制文件位置:** | 平台 | 路径 | |----------|------| | macOS | `packages/analysisloom/src-tauri/target/release/analysisloom` | | Linux | `packages/analysisloom/src-tauri/target/release/analysisloom` | | Windows | `packages/analysisloom/src-tauri/target/release/analysisloom.exe` | ### 使用示例 fixtures 尝试 生成合成法医测试文件并在应用程序中加载它们: ``` npm run test:fixtures npm run dev:analysisloom ``` | Fixture | 在应用程序中使用 | |---------|------------| | `test-fixtures/random_ntfs.dd` | 来源 → **添加图像** | | `test-fixtures/messages.db` | **打开实体**或 SQLite 管理器 | | `test-fixtures/secret_password_log.txt` | **打开实体** → 检查器 → 添加到证据 | | `test-fixtures/carve_source.dd` | 添加图像 → **恢复的文件** → 开始恢复 | | `test-fixtures/luks_volume.dd` | 添加图像 → **加密** → 扫描 | ## 📖 功能指南 ### 1. 开始一个案例 1. 点击标题栏中的 **案例**(或侧边栏中的 **案例管理器**)。 2. 输入案例名称和操作员 → **+ 新建案例**。 3. 活动案例显示在标题栏药丸中。 ### 2. 加载磁盘证据 1. 在 **来源** 中,点击 **添加图像**。 2. 选择一个原始磁盘镜像(`.dd`,`.raw`,`.img`)。 3. MFT 在本地解析;文件夹树出现在图像名称下。 4. 单击文件夹以过滤文件列表;单击文件以检查。 ### 3. 检查和哈希文件 1. 在 NTFS 浏览器中选择文件,或使用检查器中的 **打开实体**。 2. SHA-256,SHA-1 和 MD5 由 Rust 后端计算。 3. 添加标签/注释 → **添加到证据**以记录保管链。 ### 4. SQLite 分析 1. 通过 **打开实体**打开 `.db` / `.sqlite` 文件,或从 NTFS 选择 `messages.db`。 2. 切换到 **SQLite 管理器**选项卡。 3. 浏览表,查看列,分页行或运行自定义 `SELECT` 查询。 ### 5. 文件恢复 1. 确保已加载磁盘镜像。 2. 打开 **恢复的文件** → 选择输出文件夹 → **开始恢复**。 3. 进度在状态栏显示;结果列表显示恢复文件偏移量和类型。 ### 6. 加密检测 1. 加载磁盘镜像。 2. 打开 **加密** → **扫描加密**。 3. 使用置信度分数审查 LUKS / BitLocker / 高熵加密发现。 ### 7. 搜索和书签 1. 在标题栏搜索中键入关键字 → 按回车键(打开 **搜索** 视图)。 2. 在 **关键发现** 中,添加带有标签(`可疑`,`恶意软件`等)和注释的书签。 ### 8. 导出报告 1. 使用活动案例打开 **报告**。 2. 选择 **HTML** 或 **PDF** 格式 → **生成报告**。 3. 报告包括证据,发现,时间线摘要和审计日志。 ## 🧪 测试 ``` npm run test:full # fixtures + unit + integration + IPC + mock + E2E Playwright npm run test:integration # all Tauri commands against random fixtures npm run test:ipc # verify every #[tauri::command] is in generate_handler! npm run test:mock # every invoke() has a handler in tauriMock.js (E2E backend) npm run test:e2e # Playwright GUI — all sidebar views, case flow, IPC mock npm run test:fixtures # export fixtures to test-fixtures/ npm run test:gui # validate production bundle strings npm run export:types # Rust → TypeScript bindings (ts-rs) ``` 端到端规范位于 `e2e/`: | Spec | 覆盖率 | |------|----------| | `app.spec.ts` | Shell 加载,主要导航,主题切换 | | `sidebar-views.spec.ts` | 每个侧边栏条目(26+ 视图)无 IPC fatals | | `case-manager.spec.ts` | 创建案例 + YARA 扫描器面板 | ### 调试 GUI(开发工具) 当 Tauri 应用程序运行时(`npm run dev` / `npm run tauri:build`): 1. 右键单击窗口 → **检查元素**,或 `Cmd+Option+I`(macOS)/ `Ctrl+Shift+I`(Windows/Linux) 2. 打开 **控制台** 3. 查找红色错误:`command 'nama_fungsi' not found` → Rust 函数尚未在 `lib.rs` 中注册 4. 使用 `tauriInvoke()` 从 `src/lib/tauriInvoke.js` 以自动记录 IPC 错误到控制台 ### 重新生成截图(维护者) 截图以 **浅色主题** 和 **真实的 Rust 后端**处理 `test-fixtures/`(磁盘镜像,SQLite,浏览器历史记录,注册表分片,Volatility JSON)中的文件进行捕获。 ``` bash scripts/capture-screenshots.sh ``` ## 🔒 安全性与 DevSecOps - **离线优先:** 无遥测;所有法医处理都在本地运行 - **CI 网关:** `cargo fmt`,`clippy -D warnings`,`cargo test`,gitleaks,CodeQL,`cargo audit` - **依赖项更新:** Dependabot 每周更新 Cargo,npm 和 GitHub Actions - **分发:** 仅源代码;无预构建的二进制文件发布 - **报告漏洞:** 查看 [SECURITY.md](SECURITY.md) ``` npm run fmt:check && npm run lint && npm run test:all npm run audit:rust && npm run audit:npm ``` ## 🏗️ 技术堆栈 | 层 | 技术 | |-------|------------| | Shell | Tauri v2(Rust) | | UI | SvelteKit 5,受 macOS 启发的三面板布局 | | 法医引擎 | 内联 Rust — NTFS/MFT,恢复,哈希,SQLite,加密,PDF/HTML 报告 | | 存储 | SQLite(案例,证据,时间线,审计,书签) | | 安全性 | 严格 CSP,最小 Tauri 功能,仅离线 | ## 📁 项目结构 ``` packages/analysisloom/ src/App.svelte # Main shell (sidebar, tabs, inspector) src/lib/components/ # Feature tabs (NTFS, SQLite, Carving, …) src/lib/viewRegistry.js # Tab & navigation metadata src-tauri/src/forensic/ # Rust forensic engines src-tauri/src/commands.rs # Tauri IPC commands scripts/ run-full-test.sh # Full test suite capture-screenshots.sh # Headless screenshot capture generate-test-fixtures.sh # Random fixture generator test-fixtures/ # Generated sample files (gitignored) screenshots/ # README screenshots ``` ## 📄 许可证 MIT — 查看 [LICENSE](LICENSE).
标签:GhostArchive, MD5, NTFS, Rust, SHA-1, SHA-256, SQLite, SvelteKit, Tauri, 加密卷检测, 可视化界面, 审计日志, 数字取证, 文件恢复, 文件浏览, 案件管理, 磁盘分析, 网络流量审计, 自动化脚本, 证据管理, 通知系统