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, 可视化界面, 可视化节点, 威胁情报, 密码管理, 开发者工具, 插件系统, 攻击链管理, 攻防演练, 数据展示, 无限画布, 桌面应用, 笔记软件, 红队, 网络安全, 网络流量审计, 自动化攻击, 隐私保护