Raeeskhan9266/dirhunter
GitHub: Raeeskhan9266/dirhunter
一个用 Python 构建的多模式内容发现工具,支持目录、文件和子域名枚举,定位为 Gobuster 的轻量可定制替代方案。
Stars: 0 | Forks: 0
# DirHunter
一个用于目录、文件和子域名枚举的多模式 Python 工具 —
作为 Gobuster 等工具的轻量级、可定制替代方案构建,
旨在深入理解内容发现背后的底层工作原理。
## 它的功能
DirHunter 提供三种扫描模式:
1. **目录扫描** — 对目标进行目录/页面名称的暴力破解
(例如 `/admin`、`/login`、`/backup`)
2. **文件扫描** — 将目录/文件名与常见扩展名结合,
以发现 `admin.php`、`config.bak`、`backup.zip` 等文件,
同时对于已经是完整文件名的名称(例如 `.htaccess`、`robots.txt`),
会正确跳过扩展名组合
3. **子域名扫描** — 对目标域名进行子域名的暴力破解
(例如 `admin.example.com`、`dev.example.com`)
每次扫描都会生成一份 Markdown 报告,总结所有有价值的
发现(HTTP 状态码 200、301、302 和 403)。
## 为什么开发这个工具
在动手渗透测试实验中学习了使用 Gobuster 进行目录枚举之后,
我希望通过自己构建一个版本来理解该工具背后的机制 —
在 Python 中手动处理 HTTP 请求、字典表处理和结果报告。
## 环境要求
- Python 3
- `requests` 库:
```
pip3 install requests --break-system-packages
```
- 仅对你拥有或获得明确测试授权的系统使用此工具
## 用法
```
python3 dirhunter.py
```
系统会提示你:
1. 选择扫描模式(1:目录,2:文件,3:子域名)
2. 输入目标 URL 或域名
3. 输入相关的字典表文件
Markdown 报告将自动生成并保存在当前
目录中。
## 字典表
此仓库包含了用于入门的示例字典表:
- `directories.txt` — 常见目录名
- `files.txt` — 常见文件/目录基础名(与扩展名结合使用)
- `extensions.txt` — 常见文件扩展名(`.php`、`.bak`、`.zip` 等)
- `subdomains.txt` — 常见子域名
你可以随意使用自己的字典表(例如 SecLists)进行扩展。
## 示例输出
请查看 [`example_report.md`](example_report.md),这是一份针对
Metasploitable2(一台刻意设计的漏洞练习机)生成的示例报告。
## 工作原理(关键设计选择)
- **智能扩展名组合:** 在文件扫描模式下,已经
包含点号的词(如 `.htaccess` 或 `robots.txt`)将按原样进行测试,
而不是错误地为其附加扩展名(例如避免
像 `.htaccessphp` 这样的错误组合)
- **容错的字典表加载:** 如果字典表文件名输入错误,
工具会再次提示,而不是崩溃
- **请求超时:** 每个请求都有 5 秒的超时时间,以防止
工具在无响应的目标上挂起
- **整洁的输出:** 扫描期间仅打印“有价值”的状态码(200、301、302、403),
即使在处理大型字典表时也能保持终端输出的可读性
## 计划改进
## 免责声明
此工具仅供授权的安全测试和教育
目的使用。仅对你拥有或获得明确
书面测试授权的系统使用它。未经授权扫描你不拥有的
系统可能是违法的。
## 作者
Muhammad Raees Ahmad Khan — [LinkedIn](https://www.linkedin.com/in/raeesahmad)
标签:逆向工具