Jaister/ThreatJalster

GitHub: Jaister/ThreatJalster

基于无限画布的跨平台桌面应用,帮助安全团队以节点连接的方式组织威胁狩猎、应急响应和渗透测试的工作流程与证据。

Stars: 0 | Forks: 0

# ThreatJalster (Tauri + React) 用于威胁狩猎和渗透测试的跨平台桌面应用程序,基于无限画布的可连接节点构建。 ## 支持的平台 | 平台 | 状态 | |----------|--------| | Windows 10/11 (x64) | 支持 | | Linux (x64, X11 & Wayland) | 支持 | ## 系统要求 ### Windows - Windows 10 (1803+) 或 Windows 11 - [WebView2 Runtime](https://developer.microsoft.com/en-us/microsoft-edge/webview2/) (Windows 11 已内置,Windows 10 会自动安装) ### Linux 在构建或运行之前,请安装以下系统包: **Debian / Ubuntu:** ``` sudo apt update sudo apt install -y \ libwebkit2gtk-4.1-dev \ libgtk-3-dev \ libjavascriptcoregtk-4.1-dev \ libsoup-3.0-dev \ librsvg2-dev \ libxdo-dev \ build-essential \ pkg-config \ curl \ wget \ file ``` **Fedora:** ``` sudo dnf install -y \ webkit2gtk4.1-devel \ gtk3-devel \ javascriptcoregtk4.1-devel \ libsoup3-devel \ librsvg2-devel \ libxdo-devel \ gcc \ pkg-config ``` **Arch Linux:** ``` sudo pacman -S --needed \ webkit2gtk-4.1 \ gtk3 \ libsoup3 \ librsvg \ xdotool \ base-devel ``` **文件对话框支持 (Linux):** 确保安装了 `xdg-desktop-portal` 和一个 portal 后端,以使用原生文件对话框: ``` # Debian/Ubuntu (GNOME) sudo apt install -y xdg-desktop-portal xdg-desktop-portal-gtk # Debian/Ubuntu (KDE) sudo apt install -y xdg-desktop-portal xdg-desktop-portal-kde # Arch (GNOME) sudo pacman -S xdg-desktop-portal xdg-desktop-portal-gtk ``` **剪贴板图片支持 (Linux):** 应用通过原生 API 从系统剪贴板读取图片。在 X11 上开箱即用。在 Wayland 上,请确保 `wl-clipboard` 可用: ``` # Debian/Ubuntu sudo apt install -y wl-clipboard # Arch sudo pacman -S wl-clipboard ``` ## 构建要求 (所有平台) - [Node.js](https://nodejs.org/) >= 18 - [Rust](https://www.rust-lang.org/tools/install) >= 1.77 - npm (随 Node.js 附带) ## 快速开始 ``` # 安装前端依赖 npm install # 以开发模式运行 (热重载) npm run tauri:dev # 构建 release 二进制文件 npm run tauri:build ``` 仅前端开发服务器 (无 Tauri shell): ``` npm run dev ``` ## 架构 ### 前端 (React + TypeScript) - **Canvas**: `@xyflow/react` (React Flow) 用于无限缩放/平移的节点画布。 - **State**: Zustand 用于全局状态管理。 - **Markdown**: `react-markdown` + `remark-gfm` 用于节点内的富文本渲染。 ### 后端 / App Shell (Tauri + Rust) - **Shell**: Tauri v2 用于轻量级原生二进制文件及安全 IPC。 - **Persistence**: JSON 工作区文件保存至平台应用数据目录。 - **Evidence**: 图片使用 UUID 文件名保存,具有大小限制和原子写入功能。 - **Clipboard**: 通过 `arboard` 进行原生剪贴板图片读取,以支持跨平台粘贴。 ### 数据位置 | 数据 | Windows | Linux | |------|---------|-------| | Projects | `%LOCALAPPDATA%\com.security.threatjalster\projects\` | `~/.local/share/com.security.threatjalster/projects/` | | Evidence images | `%LOCALAPPDATA%\com.security.threatjalster\evidences\` | `~/.local/share/com.security.threatjalster/evidences/` | ## 关键文件 | 文件 | 用途 | |------|---------| | `src/components/canvas/ThreatCanvas.tsx` | 带有节点和边的无限画布 | | `src/components/nodes/EvidenceNode.tsx` | 包含 markdown、图片、标签、严重性的节点 UI | | `src/store/useWorkspaceStore.ts` | 全局状态和持久化逻辑 | | `src/lib/tauri.ts` | 前端 IPC 封装 | | `src-tauri/src/commands.rs` | 用于文件 I/O、对话框、剪贴板的 Rust 命令 | | `src-tauri/tauri.conf.json` | Tauri 配置、CSP、asset protocol 范围 | ## 安全性 - `withGlobalTauri: false` 以最小化 JS 攻击面。 - 在 `tauri.conf.json` 中配置严格的 CSP。 - 所有文件名均经过无害化处理 (仅限字母数字 + 下划线/连字符)。 - 强制执行图片和工作区大小限制。 - 原子写入 (`*.tmp` + 重命名) 以防止文件损坏。 - Asset protocol 仅限定于应用数据目录。
标签:React, Rust, Syscalls, Tauri, TGT, Webview2, 可视化界面, 可视化节点, 威胁情报, 密码管理, 开发者工具, 插件系统, 攻击链管理, 攻防演练, 数据展示, 无限画布, 桌面应用, 笔记软件, 红队, 网络安全, 网络流量审计, 自动化攻击, 隐私保护