Cyberfilo/scrape-gen
GitHub: Cyberfilo/scrape-gen
基于 OSINT 信息抓取的针对性密码字典生成器,为每条密码提供可追溯的推理依据,专供授权渗透测试使用。
Stars: 0 | Forks: 0
# scrape-gen
交互式 CLI 工具,用于抓取指定网站,并利用其发现的 OSINT 信息——公司名称、成立年份、地点、员工姓名、关键词——构建一个**针对性密码字典**,同时附带一份 `rationale.md`,解释*每个密码是基于哪条抓取到的信息生成的*。
## 状态与范围
- **类型**:渗透测试辅助工具 + 作品集项目
- **阶段**:已发布,适用于单目标使用的稳定版。除非业务需要,否则暂无新增功能的计划。
- **定位**:单个操作员、每次只针对一个目标,仅限授权的测试活动。
- **不适用于**:批量目标测试、自动化运行、针对个人的身份攻击。
- **扩展性**:不支持扩展——特意设计为每次只处理一个网站,并带有默认的礼貌爬取策略。
## 功能说明
1. **抓取** — 礼貌地爬取目标网站(遵循 robots.txt,仅限同一注册域名)。
- *On-domain* 范围:仅种子页面(关于、联系、团队、法律信息等)。
- *Extended* 范围:在同一注册域名内进行广度优先爬取,受 `SCRAPEGEN_MAX_PAGES` 限制。
2. **提取** — 提取结构化信息:公司名称、成立/版权年份、地点提示 -> 区域信息、团队/关于页面中的员工姓名、电子邮件、meta keywords。
3. **生成** — CUPP 风格的组合字典:基础词(公司、域名、地点、人物) × 大小写变体 × 后缀(年份、`123`、`!`) × leetspeak × 区域感知的季节/月份。
4. **扩充(可选)** — 调用 GPT-5.4(默认)或 Claude Opus 4.7 来建议额外的基础词并撰写叙述性说明。
5. **输出** — `output/.wordlist.txt` 和 `output/.rationale.md`。
## 安装
```
git clone https://github.com/Cyberfilo/scrape-gen.git
cd scrape-gen
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
cp .env.example .env # edit to add OPENAI_API_KEY / ANTHROPIC_API_KEY
```
## 运行
```
scrape-gen # or: python -m scrapegen
```
交互式向导将引导您完成:目标 URL -> 范围 -> LLM provider -> 生成组件 -> 输出路径 -> 确认 -> 抓取/提取/生成。
## LLM provider
默认为 **OpenAI `gpt-5.4-2026-03-05`**(通过 `SCRAPEGEN_OPENAI_MODEL` 设置)。备选/替代方案为 **Anthropic `claude-opus-4-7`**。在没有任何 API key 的情况下,流水线仍会生成完整的启发式字典——LLM 仅用于提供额外的基础词建议以及在 `rationale.md` 中生成润色后的叙述。
| 环境变量 | 用途 |
|---|---|
| `SCRAPEGEN_PROVIDER` | `openai` (默认) / `anthropic` / `none` |
| `OPENAI_API_KEY` | OpenAI key |
| `SCRAPEGEN_OPENAI_MODEL` | 默认为 `gpt-5.4-2026-03-05` |
| `ANTHROPIC_API_KEY` | Anthropic key |
| `SCRAPEGEN_ANTHROPIC_MODEL` | 默认为 `claude-opus-4-7` |
| `SCRAPEGEN_MAX_PAGES` | 爬虫上限 (默认 40) |
| `SCRAPEGEN_REQUEST_TIMEOUT` | 单次请求超时秒数 (默认 15) |
| `SCRAPEGEN_USER_AGENT` | 覆盖默认的 UA |
## 推理说明输出
`rationale.md` 包含:
- 提取到的 OSINT 信息的完整列表。
- 使用的每个基础词,以及证明其合理性的抓取证据(例如 `Roma — scraped location mention: 'roma'`)。
- 前 N 个生成的密码及其各自的推理链条。
- (如果运行了 LLM 扩充)模型建议的额外基础词以及书面叙述。
这使得该字典在报告中具有充分的依据:每一条目都可以追溯到公开的事实。
## 项目结构
```
scrapegen/
__main__.py # python -m entry
cli.py # Rich + questionary TUI wizard
config.py # env + provider selection
scraper.py # httpx crawler, robots-aware, on-domain / extended
extractors.py # BeautifulSoup-based fact extraction
generator.py # CUPP-style wordlist w/ rationale per entry
llm.py # OpenAI + Anthropic unified interface
rationale.py # rationale.md builder
```
## 范围控制
这两个爬取限制均可在向导(第 2 步)中切换,因为它们属于礼貌性默认设置,而非安全控制——获得授权的测试任务通常希望关闭它们。
| 标志 | 向导默认值 | 开启时的作用 |
|---|---|---|
| 遵守 `robots.txt` | **off** | 获取 `/robots.txt` 并跳过不允许的 URL。 |
| 跟踪跨域链接 | **on** (仅限 extended 模式) | 允许 extended 爬取跟踪指向其他注册域名的链接(例如托管在 Greenhouse 上的招聘信息、托管在 Zendesk 上的文档、子公司等),每个外部域名最多跟踪 3 个页面,以避免陷入死胡同。整体受 `SCRAPEGEN_MAX_PAGES` 硬性限制。 |
其他防护措施(不可切换):
- 仅获取 HTML(跳过 `.png`、`.pdf`、`.js` 等资源扩展名)。
- 同步获取,带有单次请求超时限制 (`SCRAPEGEN_REQUEST_TIMEOUT`)。
- `ScrapeResult.external_domains_visited` 会记录在 TUI 摘要中,以便您查看爬虫实际访问了哪些地方。
标签:DLL 劫持, Petitpotam, Python, Splunk, 大语言模型, 密码字典生成, 无后门, 运行时操纵, 逆向工具