amibhai/wordsmith
GitHub: amibhai/wordsmith
wordsmith 是一款基于公开情报的定向密码字典生成器,通过被动信息收集与多种变异策略为授权密码审计任务生成带评分的目标专用字典。
Stars: 1 | Forks: 0
# wordsmith
**用于授权密码审计任务的 OSINT 种子智能字典生成器。**
由 अमी 制作 —— 与 [wifi_down](https://github.com/amibhai/wifi_down) 同源。
## 功能简介
wordsmith 会被动收集关于目标组织的公开情报(WHOIS、DNS、证书、GitHub、网站),然后应用 13 种可配置的变异策略,生成一个针对该特定目标量身定制的、带有可能性评分且符合策略的字典。
**每个操作都通过 HMAC 链接并进行审计。每个出站请求都经过范围检查。不进行主动扫描。不进行身份验证绕过。**
## 法律声明
**仅限在您拥有或获得书面测试许可的系统上使用。**
在世界各地的 CFAA、IT Act 2000 及类似法律下,未经授权的访问均属犯罪行为。
在对任何目标进行测试之前,请先创建 `scope.yaml`。
## 快速开始
```
# 安装依赖
bash install.sh
# 检查所有依赖
python3 wordsmith.py --preflight
# 创建 scope 文件(必需)
python3 wordsmith.py --scope-wizard
# Interactive 模式
python3 wordsmith.py
# 完全自动化 pipeline
python3 wordsmith.py --auto --domain example.com --scope scope.yaml
# 恢复之前的 session
python3 wordsmith.py --resume SESSION_ID
# 为 session 生成报告
python3 wordsmith.py --report SESSION_ID --format all
```
## 功能特点
| 功能 | 描述 |
|---------|-------------|
| OSINT 收集 | WHOIS、DNS、crt.sh、GitHub、Reddit、HackerNews |
| 网站抓取器 | 爬取目标网站,提取有意义的词汇 |
| 13 种变异策略 | 大小写、Leet、年份、符号、数字、组合器、键盘行走、姓名、域名、模式、CMS 默认值、时间、位置 |
| 可能性评分 | 根据特定目标的概率对候选项进行排序 |
| 策略过滤 | 过滤输出以符合检测到的密码策略 |
| HMAC 审计链 | 每个操作均经过加密记录 |
| 范围强制执行 | 阻止对未经授权目标的所有操作 |
| 三个输出文件 | 完整列表、Top-1000、基于姓名的变体 |
| 报告生成 | JSON + Markdown 任务报告 |
| 会话恢复 | 保存并恢复长时间运行的会话 |
| 印地语 / 英语 UI | 使用 `--lang hi` 切换为印地语界面 |
## 变异策略
1. **大小写变体** — 小写、大写、首字母大写、aLtErNaTiNg(交替)
2. **Leet speak** — p@55w0rd 风格的替换
3. **年份后缀** — word2024, word@2024, word24
4. **符号追加** — word!, word@, word#1
5. **数字追加** — word1, word123, word007
6. **词汇组合器** — acmecorp, AcmeCorp, acme_corp
7. **键盘行走** — qwerty, asdfgh 与种子混合
8. **姓名变体** — rahul, rsharma, rahul.sharma
9. **域名变体** — acme, acmeadmin, acme2024
10. **常见模式** — Word@Year, Word@123, Admin{word}
11. **CMS 默认值** — wp-admin, cpanel, joomlaadmin
12. **时间模式** — FY2024, Q12024, Jan2024
13. **位置变体** — delhi123, Delhi@123, mumbaiHQ
## 输出文件
```
outputs/
├── wordsmith___full.txt ← Complete sorted wordlist
├── wordsmith___top1000.txt ← Top 1000 by score
└── wordsmith___names.txt ← Name-based only
```
## CLI 参考
```
wordsmith [options]
--domain DOMAIN Target domain
--company NAME Company name (if no domain)
--scope FILE scope.yaml path (default: scope.yaml)
--strategies 1,2,3 Enable only these strategies
--max-size MB Max wordlist size in MB (default 100)
--max-words N Max word count (default 5M)
--policy-min N Min password length
--policy-max N Max password length
--no-scrape Skip website scraping
--no-osint Skip OSINT collection
--seeds FILE Additional seed words file
--output DIR Output directory
--format json|md|all Report format
--auto Fully automatic mode
--resume SESSION_ID Resume previous session
--preflight Run dependency check
--scope-wizard Create scope.yaml interactively
--verify-log SID Verify HMAC audit log
--lang en|hi Interface language
-v, --verbose Verbose output
-q, --quiet Minimal output
```
## 目录结构
```
wordsmith/
├── wordsmith.py ← Entry point
├── install.sh
├── requirements.txt
├── scope.yaml.example
├── modules/
│ ├── audit.py ← HMAC-chained audit log
│ ├── banner.py ← Amber/gold TUI banner
│ ├── preflight.py ← Dependency checker
│ ├── scope.py ← Scope enforcement
│ ├── state.py ← Session state
│ ├── osint.py ← OSINT collector
│ ├── scraper.py ← Website crawler
│ ├── mutator.py ← Mutation engine (13 strategies)
│ ├── analyzer.py ← Password policy detector
│ ├── generator.py ← Wordlist assembler + scorer
│ ├── report.py ← JSON/Markdown report generator
│ └── i18n.py ← Localization
├── data/
│ ├── common_passwords.txt
│ ├── leet_map.json
│ ├── suffixes.json
│ ├── patterns.json
│ └── keyboard_walks.txt
├── locale/
│ ├── en.json
│ └── hi.json
└── outputs/ ← Generated wordlists
```
## 审计日志验证
wordsmith 采取的每一个操作都通过 HMAC-SHA256 进行链接:
```
python3 wordsmith.py --verify-log SESSION_ID
```
日志存储在 `~/.wordsmith/audit/.log` 中。
*wordsmith 仅供授权的安全任务使用。作者不对滥用行为承担任何责任。*
标签:ESC4, OSINT, Python, 密码审计, 文档结构分析, 无后门, 跨平台, 逆向工具