suiyideali/subx
GitHub: suiyideali/subx
基于 Go 语言和原始套接字的超高速无状态子域名枚举工具,通过每秒 10 万+ DNS 查询实现大规模资产发现,内置智能 DNS 选择、泛解析过滤和反向 DNS 查询等功能。
Stars: 0 | Forks: 0
# subx
[](https://golang.org)
[](LICENSE)
类似 `dnsx` + `masscan` 的子域名扫描工具。使用原始套接字,每秒可进行 10 万+ DNS 查询。
_____ _ _ __ __
/ ____| | | |\ \ / /
| (___ | | _| | \ V /
\___ \| |/ / | > <
____) | <| | / . \
|_____/|_|\_\__/_/ \_\ v0.3.3
[subx] [INF] Target: example.com
[subx] [INF] Dictionary: default (739 entries)
[subx] [INF] DNS Servers: [8.8.8.8 1.1.1.1 223.5.5.5]
[subx] [INF] Rate: 10000 pps | Timeout: 5s | Retry: 3 | Workers: 4
[English](README-EN.md) | 简体中文
## 特性
- ⚡ **超高速扫描** - 原始套接字,每秒 10万+ DNS 查询
- 🎯 **智能扫描** - 智能 DNS 选择 + 自适应速率控制
- 🛡️ **泛解析过滤** - 自动检测和过滤泛解析 DNS
- 🔄 **反向 DNS** - IP 反查域名,支持 CIDR 段扫描
- 📚 **内置字典** - 10+ 分类,25,000+ 条目
- 💾 **进度保存** - 支持中断后恢复扫描
- 🔌 **管道友好** - 与 httpx、nuclei 无缝衔接
- 🐧 **跨平台** - macOS、Linux、Windows
## 安装
### 快速安装(推荐)
go install github.com/suiyideali/subx/cmd/subx@latest
**然后添加 PATH:**
export PATH=$PATH:~/go/bin
### 双模式
| 模式 | 安装方式 | 特点 | 适用场景 |
|------|---------|------|---------|
| **非 CGO** (默认) | `go install` | 纯 Go,无需依赖,普通用户权限 | **推荐,适合大多数用户** |
| **CGO** | 源码编译 | 需要 libpcap,使用原始套接字 | 需要极致性能 |
**快速选择:**
- 大多数用户:直接用上面的 `go install` 命令
- 需要高性能:从[源码编译 CGO 版本](docs/INSTALL.md)
📖 **详细安装指南** → [docs/INSTALL.md](docs/INSTALL.md)
## 使用方法
# 基础扫描
sudo subx enum -d example.com
# 使用大字典
sudo subx enum -d example.com -dict large
# 智能 DNS + 自适应速率(推荐)
sudo subx enum -d example.com --smart-dns --adaptive
# 输出到文件
subx enum -d example.com -o results.txt
# 静默模式(用于管道)
subx enum -d example.com --silent | httpx
# 恢复扫描
subx enum -d example.com --resume
# 验证域名列表
subx verify -f domains.txt
# 反向 DNS 查询
subx rdns -ip 8.8.8.8
subx rdns -range 192.168.1.0/24
# 扫描 + 反向 DNS
sudo subx enum -d example.com --rdns
### 内置字典
| 字典 | 条目数 | 描述 |
|------|--------|------|
| `default` | ~25,000 | 常用子域名(默认,含 20,000 文件字典) |
| `common` | ~2000 | 扩展常用列表 |
| `large` | ~5000 | 所有分类合并 |
| `api` | ~150 | API 端点 |
| `cloud` | ~200 | 云服务(AWS、Azure、GCP 等) |
| `dev` | ~250 | DevOps/CI/CD 工具 |
| `infra` | ~300 | 基础设施组件 |
| `web` | ~200 | Web 服务/CMS |
| `db` | ~250 | 数据库/存储 |
| `security` | ~300 | 安全工具 |
# 使用特定字典
subx enum -d example.com -dict api
subx enum -d example.com -dict cloud
subx enum -d example.com -dict security
### 输出格式
| 格式 | 描述 | 扩展名 |
|------|------|--------|
| `txt` | 制表符分隔的文本(默认) | .txt |
| `json` | JSON 数组 | .json |
| `jsonl` | JSON Lines(每行一个) | .jsonl |
| `csv` | 逗号分隔值 | .csv |
| `simple` | 仅域名 | .txt |
## 性能对比
| 工具 | 模式 | 10万域名耗时 | 成功率 |
|------|------|-------------|--------|
| subx | 验证 | ~25秒 | 1397 |
| massdns | 验证 | ~3分29秒 | 1396 |
| dnsx | 验证 | ~5分26秒 | 1396 |
*测试环境:4核 CPU,5M 带宽*
## Go SDK
### 基础用法
package main
import (
"fmt"
"github.com/suiyideali/subx/pkg/sdk"
)
func main() {
// 简单扫描
results, err := sdk.SimpleScan("example.com", []string{
"www", "api", "mail", "admin",
})
if err != nil {
panic(err)
}
for _, r := range results {
fmt.Printf("%s -> %v\n", r.Domain, r.IPs)
}
}
### 高级用法
// 自定义配置
cfg := &sdk.Config{
Bandwidth: "10m",
Timeout: 10,
Retry: 5,
Predict: true,
}
scanner, err := sdk.NewScanner(cfg)
if err != nil {
panic(err)
}
defer scanner.Close()
// 流式实时获取结果
results := scanner.EnumStream("example.com", wordlist)
for r := range results {
fmt.Printf("发现:%s\n", r.Domain)
}
## 许可证
MIT 许可证 - 详见 [LICENSE](LICENSE) 文件
## 致谢
- 灵感来自 [ksubdomain](https://github.com/boy-hack/ksubdomain) 和 [masscan](https://github.com/robertdavidgraham/masscan)
- 使用 [gopacket](https://github.com/google/gopacket) 进行数据包操作
- DNS 协议处理使用 [miekg/dns](https://github.com/miekg/dns)
## 免责声明
本工具仅供授权的安全测试使用。用户有责任遵守适用的法律法规。
标签:CDN识别, DNS查询, EVTX分析, GitHub, Go语言, GraphQL安全矩阵, SEO, 二进制发布, 原始套接字, 反向DNS, 子域名枚举, 子域名爆破, 安全扫描器, 开源工具, 插件系统, 无状态扫描, 日志审计, 泛解析过滤, 程序破解, 系统安全, 网络安全, 隐私保护