lswartsenburg/pentographer
GitHub: lswartsenburg/pentographer
Pentographer 是一款开源渗透测试管理平台,帮助安全团队集中管理测试发现、构建可复用 Playbook、利用 AI 辅助生成报告并导出专业文档。
Stars: 0 | Forks: 0
# Pentographer
一款渗透测试报告管理工具。Pentographer 帮助安全团队管理测试发现,构建可复用的 playbook,生成 AI 辅助报告内容,并导出专业的 Word/PDF 报告。
## 功能
- **项目与发现** — 组织测试项目,记录带有风险等级、证据截图和版本历史的发现
- **Playbook** — 用于可复用测试清单的草稿/发布工作流;将 playbook 条目直接关联到发现
- **AI 辅助** — 使用 Anthropic Claude 撰写和审查发现;视觉支持允许 AI 参考上传的证据图像
- **报告导出** — 生成 Word (.docx) 报告;通过个人模板库导入您自己的模板
- **模板市场** — 与其他用户共享和复制报告模板
- **客户** — 跟踪客户并将其与项目关联
## 技术栈
- [Next.js 16](https://nextjs.org) (App Router, standalone output)
- [Drizzle ORM](https://orm.drizzle.team) + PostgreSQL
- [Vercel Blob](https://vercel.com/docs/storage/vercel-blob) 用于文件存储
- [NextAuth.js](https://next-auth.js.org) (credentials, JWT sessions)
- [Anthropic Claude](https://anthropic.com) 用于 AI 功能
- [shadcn/ui](https://ui.shadcn.com) 组件库
## 快速开始
### 前置条件
- Node.js 24(如果您有 nvm,请使用 `nvm use`)
- pnpm (`npm install -g pnpm`)
- PostgreSQL 16,或使用 Docker 在本地运行
### 本地开发
1. **克隆并安装**
git clone https://github.com/lswartsenburg/pentographer.git
cd pentographer
nvm use
pnpm install
2. **配置环境**
复制示例文件并填写相应的值:
cp .env.example .env.local
必需的变量:
| 变量 | 描述 |
| ----------------------- | -------------------------------------------------------------------------------- |
| `DATABASE_URL` | PostgreSQL 连接字符串 |
| `AUTH_SECRET` | 用于 NextAuth JWT 签名的随机密钥 — 使用 `openssl rand -base64 32` 生成 |
| `BLOB_READ_WRITE_TOKEN` | 用于文件存储的 Vercel Blob token |
| `ANTHROPIC_API_KEY` | 用于 AI 功能的 Anthropic API key |
3. **启动数据库** (Docker)
docker compose up db -d
4. **运行迁移并填充数据**
pnpm db:migrate
pnpm db:seed
5. **启动开发服务器**
pnpm dev
打开 [http://localhost:3000](http://localhost:3000)。
### Docker (all-in-one)
启动应用、PostgreSQL 和 MinIO(本地 blob 存储):
```
docker compose up
```
## 脚本
| 命令 | 描述 |
| ------------------ | -------------------------------------- |
| `pnpm dev` | 启动开发服务器 |
| `pnpm build` | 生产构建 |
| `pnpm type-check` | TypeScript 类型检查 |
| `pnpm format` | 使用 Prettier 格式化所有文件 |
| `pnpm test:e2e` | 运行 Playwright 端到端测试 |
| `pnpm db:generate` | 生成 Drizzle 迁移文件 |
| `pnpm db:migrate` | 应用待处理的迁移 |
| `pnpm db:studio` | 打开 Drizzle Studio(数据库浏览器) |
| `pnpm db:seed` | 使用示例数据填充数据库 |
| `pnpm commit` | 交互式 conventional commit 助手 |
## 端到端测试
端到端测试使用 [Playwright](https://playwright.dev) 并且需要一个正在运行的服务器。如果存在已保存的 session 文件,当尚未运行开发服务器时,`pnpm test:e2e` 会自动启动它。
某些测试需要在 `.env.local` 中设置额外的环境变量:
| 变量 | 描述 |
| ----------------- | ------------------------------------------------ |
| `TEST_EMAIL` | 测试用户的电子邮件 |
| `TEST_PASSWORD` | 测试用户的密码 |
| `TEST_PROJECT_ID` | 测试用户拥有的现有项目的 ID |
当未设置这些变量时,依赖这些变量的测试会自动跳过。
## 安全
要报告安全漏洞,请参阅 [SECURITY.md](./SECURITY.md) 或发送电子邮件至 [security@pentographer.com](mailto:security@pentographer.com)。
标签:PB级数据处理, PostgreSQL, PPID欺骗, 安全运维, 报告管理, 测试用例, 特征检测, 自动化攻击, 请求拦截