own2pwn-fr/pwn2report
GitHub: own2pwn-fr/pwn2report
一款本地优先、加密存储的安全评估报告撰写桌面应用,支持渗透测试、代码审计和红队报告的结构化发现管理与多格式导出。
Stars: 2 | Forks: 0
# pwn2report
[](https://github.com/own2pwn-fr/pwn2report/actions/workflows/ci.yml)
[](./LICENSE)

`pwn2report` 是一个 [Tauri](https://tauri.app) 桌面应用程序(Linux · Windows · macOS),用于
编写并导出专业的安全报告。你的发现永远不会离开你的机器:
所有内容都存储在 **SQLCipher 加密** 的本地数据库中,通过主密码短语解锁。报告通过内嵌的
[Typst](https://typst.app) 引擎渲染为 **PDF** —— 对于 PDF 而言无需外部二进制文件,且在每个 OS 上的输出完全一致。
(DOCX 导出使用 `pandoc`;详见安装说明。)
## 设计理念
一个严谨且有着自身坚持的核心;一个由 **数据驱动而非选项驱动** 的开放外围。
发现的数据模型和渲染引擎是固定且持续维护的;不同测试人员所期望的多样性,全部存在于
**你拥有的模板和内容中** —— 而不是数以千计的配置开关里。
如果两个人想要不同的报告,那是模板的区别,而不是设置的差异。
## 状态
**功能完备、经过强化和审计。** 支持三种报告类型,配备包含交互式 CVSS 3.1/4.0 计算器的完整发现编辑器,
多格式导出(PDF / DOCX / Markdown / HTML),可编辑的 Typst 模板,可重用的漏洞知识库,扫描器导入器,
证据 pipeline(图库 + 标注/脱敏工具),可选的插拔式 AI 辅助,运行时 EN/FR 本地化,新手引导,
以及端到端加密的本地优先同步。
## 功能
- 🔐 **本地优先与加密** — SQLCipher 数据库,密码短语解锁,可选 OS keychain,
应用内修改密码短语 + 保险库备份。
- 📝 **完整的结构化发现** — 严重程度,交互式 CVSS 3.1/4.0,CWE/CVE,描述
维度,修复建议,证据,PoC,引用/标签,分类筛选。
- 📄 **多格式导出** — PDF(内嵌 Typst,品牌风格),DOCX(通过 pandoc),Markdown,
独立的 HTML。
- 🧩 **三种报告类型 + 可编辑模板** — Web 渗透测试、代码审计、红队对抗;可在
应用内编辑 Typst 模板。
- 📚 **知识库** — 可重用的发现模板(内置目录 + 你自己的);一键
添加到报告。
- 📥 **导入器** — SARIF, Nuclei, ZAP, Burp, Nessus 和 secai/EASM 原生 JSON。
- 🖼️ **证据 pipeline** — 附加截图,进行标注和脱敏(内置),内嵌于
每次导出。
- 🤖 **可选 AI 辅助** — Ollama(本地)或云端 API;默认关闭,除非你启用,否则
不会向外部发送任何数据。
- 🌍 **EN / FR** 界面,支持运行时切换 · 首次运行新手引导。
- 🔁 **端到端加密同步** — 便携式加密 bundle,无冲突合并,无需服务器。
- 🎨 **own2pwn 外观** — 暗色/亮色,紫罗兰色调,流畅的微交互。
除了最初的路线图外,它还包括:受影响资产/范围模型,项目元数据和报告级品牌设置,报告/发现克隆,
重测工作流,自定义字段,合规性映射,CSV/SARIF 导出,Azure/Gemini AI 提供商,以及强化的安全性和无障碍审查。
## 安装说明
**Linux / macOS — 一行命令**(下载适合你 OS/架构的最新版本):
```
curl -fsSL https://raw.githubusercontent.com/own2pwn-fr/pwn2report/main/install.sh | sh
```
或者从 [Releases](https://github.com/own2pwn-fr/pwn2report/releases) 页面获取适合你操作系统的安装程序
(Linux 上是 `.deb`/`.rpm`/AppImage,Windows 上是 `.msi`,macOS 上是 `.dmg`)。
- **DOCX 导出**需要 [`pandoc`](https://pandoc.org/installing.html) —— 发布版本中已将其捆绑;
如果你从源码运行,请安装 pandoc 或将 `PWN2REPORT_PANDOC` 设置为其路径。
- **Linux** 还需要 WebKitGTK 运行时(`webkit2gtk-4.1`)。
## 使用说明
**无需账户且没有服务器** —— “登录”意味着解锁你本地的加密保险库。
1. **首次运行** → 使用主密码短语 *创建你的保险库*(可选择在 OS keychain 中记住它)。
⚠️ **无法恢复密码短语** —— 如果你丢失了它,保险库将无法找回。
2. **新建报告**(Web 渗透测试 / 代码审计 / 红队对抗)→ 填写范围、资产、项目元数据。
3. **添加发现** —— 手动添加,**从知识库中添加**,或者通过 **导入** 扫描器输出
(SARIF / Nuclei / ZAP / Burp / Nessus / CSV / secai)。附加证据并标注/脱敏。
4. **导出** 为 PDF / DOCX / Markdown / HTML / CSV / SARIF;选择报告的语言(EN/FR)。
5. **同步** 通过设置在不同机器间进行 → 生成一个端到端加密的 `.p2r` bundle。
## 未来增强
- 用于同步的实时中继 / P2P 传输(目前:便携式加密 bundle)。
- 外部集成(推送到 Jira / DefectDojo / GitLab issues)。
## 故障排除
- **DOCX 导出失败** → 安装 `pandoc`(或设置 `PWN2REPORT_PANDOC`)。
- **忘记密码短语** → 设计上无法恢复;如果你有备份/同步 bundle,请从中恢复。
- **Linux:空白窗口 / 启动错误** → 安装 `webkit2gtk-4.1`。
- **从源码构建:cargo 错误** → 使用 rustup(仓库固定使用 Rust 1.89);不要使用发行版的系统 rust。
## 技术栈
| 层级 | 选择 |
|---|---|
| Shell | Tauri v2 |
| Frontend | Vite + React + TypeScript + shadcn/ui + Tailwind, `motion` |
| Storage | SQLite + SQLCipher (rusqlite, bundled), 用于 OS keychain 的 `keyring` |
| PDF | Typst,进程内嵌入(`typst-as-lib`) |
| 数据模型 | 映射 secai-core `Finding` 结构 |
## 开发
需要 Node ≥ 20 + pnpm,以及 Rust(工具链通过
`src-tauri/rust-toolchain.toml` 固定,以匹配 Typst 的 MSRV)。在 Linux 上你还需要 WebKitGTK
开发包(`webkit2gtk-4.1`,`javascriptcoregtk-4.1`)。
```
pnpm install
bash scripts/fetch-pandoc.sh # fetch the pandoc sidecar for your OS (gitignored)
pnpm tauri dev # run the app
pnpm tauri build # produce installers
# 测试
pnpm test # frontend (Vitest)
cd src-tauri && cargo test # backend (incl. end-to-end integration tests)
```
DOCX 导出需要 `pandoc`:在发布构建中作为 sidecar 被捆绑(`scripts/fetch-pandoc.sh`),
否则将从 `PATH`(或 `PWN2REPORT_PANDOC` 环境变量)中解析。CI 在
Linux、macOS 和 Windows 上构建/测试;标记 `v*` 会通过发布工作流构建已签名的安装程序。
## 贡献与安全
有关开发设置和 PR 检查清单,请参阅 [CONTRIBUTING.md](./CONTRIBUTING.md),
有关威胁模型及如何私下报告漏洞,请参阅 [SECURITY.md](./SECURITY.md)。
## 许可证
[AGPL-3.0](./LICENSE)。请注意 AGPL §13 网络条款:如果你通过网络向用户提供修改后的版本,
你必须向他们公开你修改后的源代码。
标签:SQLCipher, Tauri, Typst, 可视化界面, 安全报告工具, 本地优先, 桌面应用, 通知系统