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, 子域名枚举, 无后门, 系统安全, 系统独立性, 逆向工具