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)
标签:逆向工具