Galaxus21/pdfBrute
GitHub: Galaxus21/pdfBrute
一款完全在浏览器中本地运行的 PDF 密码恢复工具,通过模式构建器和多线程暴力破解帮助用户找回遗忘的 PDF 密码。
Stars: 0 | Forks: 0
# PDFBrute
**在线演示 → [pdfbrute.web.app](https://pdfbrute.web.app/)**
PDFBrute 可帮助您找回遗忘了密码的 PDF 文档。它使用 Web Workers **完全在您的浏览器中**运行——无需上传文件,无需服务器,无追踪行为。
## 工作原理
1. **上传您被锁定的 PDF** —— 文件永远不会离开您的浏览器。
2. **构建模式掩码** —— 使用符号描述您的密码外观(例如 `LLLLdddd` 表示 4 个字母 + 4 个数字)。
3. **固定已知字符** —— 可选地锁定您确切记得的特定位置字符。
4. **点击恢复** —— PDFBrute 使用 Web Workers 在后台尝试每一个候选密码,并实时显示速度和进度统计。
## 功能
### 模式构建器
使用简写符号定义一个与您预期密码结构相匹配的掩码。与无限制的暴力破解相比,这能大幅缩小搜索空间。
| 符号 | 含义 | 示例 |
|--------|---------|---------|
| `L` | 大写字母 (A–Z) | `A`, `B`, … `Z` |
| `l` | 小写字母 (a–z) | `a`, `b`, … `z` |
| `d` | 数字 (0–9) | `0`, `1`, … `9` |
| `DD` | 日期 (01–31) | `01`, `15`, `31` |
| `MM` | 月份 (01–12) | `01`, `06`, `12` |
| `YYYY` | 年份 (1900–2100) | `1990`, `2005`, `2024` |
| `?` | 任意可打印 ASCII 字符 | `!`, `@`, `A`, `3`, … |
内置**快速启动预设**:*4 位数字 PIN*、*出生日期*、*姓名 + 年份* —— 点击即可立即应用。
**实时预览** 会随着您的输入而更新,展示您的模式将生成的密码示例。
### 固定已知字符
在“高级设置”面板中,将您已知的任何字符输入到其确切的位置槽中。PDFBrute 会在启动时过滤搜索空间——仅测试与您已知字符匹配的候选密码。
### 高性能 Web Workers
暴力破解引擎在专用的 Web Worker 中运行,确保 UI 保持完全响应。恢复循环采用**事件驱动、非克隆**架构 —— PDF buffer 仅加载一次,并为每个候选密码调用 `onPassword`,避免了每次尝试时内存消耗极大的重新分配。
实时统计每 250ms 更新一次:
- 已测试的密码数
- 当前正在尝试的候选密码
- 速度(密码/秒)
- 已用时间
### 深色模式
完全响应式的 UI,可根据您的系统偏好自动切换亮/暗模式。使用自定义设计系统 (`theme.ts`) 并通过 Aphrodite 采用 CSS-in-JS 设计。
### 隐私
- 无文件上传 —— 使用 [PDF.js](https://mozilla.github.io/pdf.js/) 在本地处理 PDF
- 不向任何服务器发送密码
- 无后端 —— 通过 Firebase 进行纯静态托管
## 技术栈
| 技术 | 作用 |
|------------|------|
| [React 19](https://react.dev/) | UI 框架 |
| [TypeScript](https://www.typescriptlang.org/) | 类型安全的逻辑 |
| [Vite](https://vitejs.dev/) | 构建工具和开发服务器 |
| [PDF.js](https://mozilla.github.io/pdf.js/) | 客户端 PDF 解密 |
| [Ant Design](https://ant.design/) | UI 组件库 |
| [Aphrodite](https://github.com/Khan/aphrodite) | CSS-in-JS 样式设计 |
| [Firebase](https://firebase.google.com/) | 托管和分析 |
| Web Workers API | 后台线程执行 |
## 开始使用
### 前置条件
确保已安装 [Node.js](https://nodejs.org/)。
### 安装
```
# 克隆 repo
git clone https://github.com/Galaxus21/pdfBrute.git
cd pdfBrute
# 安装 dependencies
npm install
# 启动 dev server
npm run dev
```
### 生产环境构建
```
npm run build
```
## 项目结构
```
src/
├── components/
│ ├── PatternBuilder.tsx # Pattern mask input, symbol legend, live preview
│ ├── GeneratorSettings.tsx # Known character pinning (advanced panel)
│ ├── UploadPDF.tsx # PDF drag-and-drop / file input
│ ├── ProgressBar.tsx # Live recovery stats and progress display
│ └── ResultCard.tsx # Found/exhausted/error result display
├── workers/
│ └── recovery.worker.ts # Web Worker: brute-force engine
├── utils/
│ ├── generators.ts # Generator strategies (Cartesian product engine)
│ └── patterns.ts # Pattern parsing and preview utilities
├── styles/
│ ├── theme.ts # Design system tokens (colors, typography, spacing)
│ └── themeContext.tsx # Light/dark theme context provider
└── types/ # Shared TypeScript types
```
## 部署
本项目已配置为使用 Firebase Hosting。
```
# 安装 Firebase CLI
npm install -g firebase-tools
# 登录
firebase login
# 部署
firebase deploy --only hosting
```
## License
MIT
标签:PoC, Web Workers, Web前端, 客户端计算, 密码学, 手动系统调用, 暴力破解, 自动化攻击