umar1122/Subdomain-Finder

GitHub: umar1122/Subdomain-Finder

一款基于 Python 的轻量级子域枚举工具,通过多线程 DNS 解析和字典扫描快速发现目标域名的子域。

Stars: 0 | Forks: 0

# SubFinder 🔍 一个使用 Python 编写的快速、轻量级子域枚举工具。通过 DNS 解析和多线程扫描发现任何目标域名的子域。 ``` ███████╗██╗ ██╗██████╗ ███████╗██╗███╗ ██╗██████╗ ███████╗██████╗ ██╔════╝██║ ██║██╔══██╗██╔════╝██║████╗ ██║██╔══██╗██╔════╝██╔══██╗ ███████╗██║ ██║██████╔╝█████╗ ██║██╔██╗ ██║██║ ██║█████╗ ██████╔╝ ╚════██║██║ ██║██╔══██╗██╔══╝ ██║██║╚██╗██║██║ ██║██╔══╝ ██╔══██╗ ███████║╚██████╔╝██████╔╝██║ ██║██║ ╚████║██████╔╝███████╗██║ ██║ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚══════╝╚═╝ ╚═╝ ``` ## ⚡ 功能 - **快速** — 多线程 DNS 解析(可配置线程数) - **双引擎** — 优先使用 `dnspython` 以确保准确性;如果不可用则回退到 `socket` - **内置字典** — 开箱即用,包含 100 多个常用子域 - **自定义字典** — 支持导入您自己的字典文件 - **进度条** — 实时显示进度和已用时间 - **输出到文件** — 保存发现的子域以供日后使用 - **详细模式** — 查看每一次检查,而不仅是命中的结果 - **彩色输出** — 整洁的终端 UI - **无需外部 API** — 纯基于 DNS,可离线工作 ## 📋 要求 - Python 3.7+ - `dnspython`(可选,但推荐) ## 🚀 安装 ``` # 1. Clone 仓库 git clone https://github.com/umar1122/subfinder.git cd subfinder # 2. 安装依赖(可选但推荐) pip install -r requirements.txt ``` ## 🛠 用法 ### 基础扫描(内置字典) ``` python subfinder.py -d example.com ``` ### 自定义字典 ``` python subfinder.py -d example.com -w wordlists/common.txt ``` ### 将结果保存到文件 ``` python subfinder.py -d example.com -o results.txt ``` ### 增加线程数以加快扫描速度 ``` python subfinder.py -d example.com -t 100 ``` ### 详细模式(查看每个检查的子域) ``` python subfinder.py -d example.com -v ``` ### 完整示例 ``` python subfinder.py -d example.com -w wordlists/common.txt -t 80 -o output.txt -v ``` ## ⚙️ 选项 | 标志 | 完整参数 | 描述 | 默认值 | |------|------|-------------|---------| | `-d` | `--domain` | 目标域名(必填) | — | | `-w` | `--wordlist` | 自定义字典文件路径 | 内置字典 | | `-t` | `--threads` | 并发线程数 | `50` | | `-o` | `--output` | 将结果保存到文件 | 无 | | `-v` | `--verbose` | 显示所有检查记录,而不仅是已发现的 | 关 | | | `--no-banner` | 隐藏 ASCII banner | 关 | ## 📁 项目结构 ``` subfinder/ ├── subfinder.py # Main tool ├── requirements.txt # Python dependencies ├── wordlists/ │ └── common.txt # Built-in wordlist (editable) ├── .gitignore └── README.md ``` ## 📄 输出格式 发现的子域将打印到终端,并可选择保存: **终端:** ``` [+] dev.example.com 93.184.216.34 [+] mail.example.com 93.184.216.35 [+] api.example.com CNAME → api-lb.example.com ``` **文件(`-o results.txt`):** ``` # SubFinder 结果 — 2024-06-15 14:30:00 dev.example.com 93.184.216.34 mail.example.com 93.184.216.35 api.example.com CNAME → api-lb.example.com ``` ## 📝 自定义字典 您可以使用任何字典文件 —— 每行一个子域。以 `#` 开头的行将被视为注释。 **示例:** ``` # 我的自定义 wordlist www api admin staging dev ``` 与 SubFinder 配合良好的热门社区字典: - [SecLists DNS 字典](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS) - [Jhaddix all.txt](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056) ## 🔧 提示 - 对于大多数目标,从 **50–100 个线程**开始;如果遇到速率限制则减少线程数 - 使用**大型字典**(1万+ 词)进行彻底的枚举 - 结合 `httpx` 或 `nmap` 等工具进一步探测发现的子域 - 务必确保您有**权限**扫描目标域名 ## ⚠️ 法律免责声明 本工具仅供**授权的安全测试和教育目的**使用。未经所有者明确许可扫描域名可能是违法的。对于因滥用本工具造成的任何误用或损害,作者不承担任何责任。 **仅扫描您拥有或获得书面测试许可的域名。** ## 📜 许可证 本项目基于 MIT 许可证授权 —— 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 ## 🌟 致谢 - 灵感来源于 [Sublist3r](https://github.com/aboul3la/Sublist3r) 和 [amass](https://github.com/owasp-amass/amass) 等工具 - DNS 解析由 [dnspython](https://www.dnspython.org/) 提供支持
标签:GitHub, Python, 子域名枚举, 无后门, 系统安全, 系统独立性, 逆向工具