dpnd3v/subdomains_enumerator

GitHub: dpnd3v/subdomains_enumerator

基于 aiodns 的异步 DNS 子域名爆破工具,支持 CDN 指纹识别、IP 地理定位和自适应速率控制。

Stars: 0 | Forks: 0

# 子域名枚举器 用于 DNS 暴力枚举的异步 OSINT 工具。通过字典解析子域名,并返回每个命中结果的 IP、CDN 指纹和地理位置。基于 `aiodns` 构建,具备速率限制和自适应节流功能以避免网络饱和。空闲时自动停止。 ## 环境要求 ``` pip install aiodns ``` ## 用法 ``` python subdomain_enum.py [options] ``` ### 示例 ``` # Basic scan python subdomain_enum.py example.com # Custom wordlist python subdomain_enum.py example.com -w names_clean.txt # Save output to file python subdomain_enum.py example.com -o results.txt # Lower rate for unstable Wi-Fi python subdomain_enum.py example.com --qps 100 # Custom nameservers, higher concurrency python subdomain_enum.py example.com --ns 1.1.1.1 8.8.8.8 -c 500 # Stop after 30s with no new hits python subdomain_enum.py example.com --idle 30 ``` ## 选项 | 标志 | 默认值 | 描述 | |---|---|---| | `domain` | — | 目标域名(例如 `example.com`) | | `-w`, `--wordlist` | `names.txt` | 子域名字典路径 | | `-c`, `--concurrency` | `300` | 最大并发异步查询数 | | `--qps` | `200` | 每秒最大 DNS 查询数 | | `-t`, `--timeout` | `3.0` | 单次 DNS 查询超时时间(秒) | | `--idle` | `60` | 若无新命中超过此秒数则停止 | | `--ns` | `1.1.1.1 8.8.8.8 9.9.9.9` | 自定义 nameserver | | `-o`, `--output` | — | 将结果保存到文件 | | `--threads` | `100` | 仅用于 socket 回退的线程数 | ## 输出格式 ``` SOTTODOMINIO IP CDN POSIZIONE ----------------------------------------------------------------------- api.example.com 104.21.10.5 Cloudflare San Francisco, United States mail.example.com 1.2.3.4 - Amsterdam, Netherlands vpn.example.com 127.0.0.1 localhost localhost ``` - **CDN** 通过 CNAME 链匹配和 IP 范围指纹识别进行检测(Cloudflare, Akamai, Fastly, AWS, Azure, Google 等)。 - **POSIZIONE** 通过 [ip-api.com](http://ip-api.com) 解析 —— 无需 API 密钥。结果按 IP 缓存以避免重复请求。 - 私有/环回 IP(`127.x`, `10.x`, `192.168.x`, `172.16–31.x`)在 CDN 和 POSIZIONE 列中均标记为 `localhost`。 ## 速率预设 | `--qps` | 配置文件 | 适用场景 | |---|---|---| | `100` | 安全 | 家庭 Wi-Fi,性能较弱的路由器 | | `200` | 均衡 | 默认值,适用于大多数环境 | | `500` | 快速 | 有线 / 稳定连接 | | `1000` | 激进 | 仅限 LAN 或 VPS | ## 工作原理 1. 加载字典并构建 `word.domain` FQDN。 2. 启动受 **令牌桶** (`--qps`) 和 **信号量** (`--concurrency`) 约束的异步 DNS 任务。 3. 对于每个解析出的 A 记录,尝试进行 CNAME 查询以检测 CDN,随后回退到 IP 范围匹配。 4. 调用 `ip-api.com` 获取地理位置 —— 每个唯一 IP 请求一次。 5. 监控自上次命中以来的时间。如果超过 `--idle` 秒,则取消所有待处理任务并打印结果。 ## 空闲超时 如果在 `--idle` 秒(默认值:60)内未发现新的子域名,扫描将自动停止。每次命中时计时器重置。这对于大型字典非常有用,因为大多数条目在开始阶段就能快速解析,而尾部则是无效负载。 ``` [!] Idle timeout : no new subdomains found for 60s — stopping early. [*] Done : 14 found | 87.3s | 183 q/s avg ``` ## 字典 包含的 `names_clean.txt` 是原始 `names.txt`(129k 条目 → ~80k)的过滤版本,移除了以下内容: - 随机键盘乱码(`hgfgdf`, `zcvbnnn`, …) - 中文赌博/赌场拼音字符串 - 个人博客名称和复合连字符条目 - 托管客户 ID(`cust30`–`cust126`) - 旧版 Windows/OS 主机名(`winnt`, `nt40`, `isaserver`, …) - 底层协议服务名称(AFS, NetBIOS, Bacula, …) - 下划线前缀的服务记录(`_sip`, `_ftp`, …) 剩余内容包括:web、mail、DNS、VPN、API、database、游戏服务器(Minecraft, Rust, Ark)、DevOps、监控、面板和通用基础设施子域名。 names.txt > sublist3r (thankssss)
标签:aiodns, CDN指纹识别, GitHub, IP地理定位, Python安全工具, 主机安全, 子域名枚举, 异步OSINT工具, 系统安全, 网络安全, 计算机取证, 逆向工具, 隐私保护