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前端, 客户端计算, 密码学, 手动系统调用, 暴力破解, 自动化攻击