Skip to content

XiaomingX/SubHunter

Repository files navigation

SubHunter - 高性能域名情报工具集

SubHunter 是一款面向安全研究与资产发现的高性能域名情报工具集,基于 Python 3.11+ 异步框架构建,提供子域名枚举、过期域名扫描和证书透明度查询三大核心功能。

核心功能

1. 子域名扫描器 (SubHunter Core)

快速枚举目标域名的所有子域名,支持泛解析检测和 HTTP 服务验证。

特性:

  • ⚡ 高并发异步 DNS 解析
  • 🔍 智能泛解析检测与过滤
  • 🛡️ HTTP/HTTPS 服务存活验证
  • 📊 多格式结果输出(JSON/CSV/Text)

2. 过期域名扫描器

批量检测域名注册状态,快速发现可注册的过期域名。

特性:

  • 🕰️ 异步 WHOIS 查询引擎
  • 📂 自动从 Markdown 文件提取域名
  • 📊 实时进度显示
  • 💾 结构化结果存储(JSONL)

3. CT 证书透明度扫描器

通过证书透明度日志发现隐藏子域名。

特性:

  • 🔍 查询 crt.sh 证书数据库
  • ⏱️ 异步并发查询
  • 📋 自动去重与格式化输出
  • 🎨 精美的表格展示

快速开始

环境要求

  • Python 3.11+
  • uv 包管理器

安装依赖

# 安装 uv(如果尚未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 同步项目依赖
uv sync

使用示例

子域名扫描

# 基础扫描
uv run python core.py -d example.com -f test_dict.txt

# 自定义并发数和输出格式
uv run python core.py -d example.com -f test_dict.txt -c 200 -o json

# 参数说明
# -d, --domain: 目标域名
# -f, --file: 字典文件路径(默认: test_dict.txt)
# -c, --concurrency: 并发数(默认: 100)
# -o, --output: 输出格式 text/json/csv(默认: text)

过期域名扫描

cd check-expired-domain-names

# 扫描默认文件
uv run python scanner.py

# 自定义输入文件和并发数
uv run python scanner.py -i data/tocheck-full.md -c 100

# 参数说明
# -i, --input: 输入 Markdown 文件(默认: data/example.md)
# -o, --output: 输出目录(默认: checked)
# -c, --concurrency: 并发数(默认: 50)

CT 证书扫描

cd check-crtsh

# 查询指定域名
uv run python crtsh_scan.py -d example.com

# 参数说明
# -d, --domain: 目标域名(默认: aliexpress.com)

项目结构

subHunter/
├── core.py                          # 子域名扫描器核心
├── test_dict.txt                    # 默认字典文件
├── pyproject.toml                   # 项目配置
├── uv.lock                          # 依赖锁定文件
├── results/                         # 扫描结果目录
├── tests/                           # 测试套件
│   ├── test_core.py                # 核心功能测试
│   ├── test_domain_scanner.py      # 域名扫描器测试
│   └── test_crtsh_scanner.py       # CT 扫描器测试
├── docs/
│   └── OPTIMIZATION_LOG.md         # 优化记录
├── check-expired-domain-names/     # 过期域名扫描器
│   ├── scanner.py
│   ├── data/                       # 测试数据
│   └── checked/                    # 扫描结果
└── check-crtsh/                    # CT 证书扫描器
    └── crtsh_scan.py

技术架构

核心技术栈

  • 语言: Python 3.11+
  • 包管理: uv
  • 异步框架: asyncio + uvloop
  • DNS 解析: dnspython
  • HTTP 客户端: httpx
  • CLI 框架: click
  • 终端美化: rich + tqdm

性能特性

  • 异步 I/O 模型,支持高并发
  • 智能并发控制,避免资源耗尽
  • 内存占用低,适合大规模扫描
  • 支持自定义并发数和超时时间

测试

项目包含完整的测试套件,覆盖所有核心功能。

# 运行所有测试
uv run python tests/test_core.py
uv run python tests/test_domain_scanner.py
uv run python tests/test_crtsh_scanner.py

测试覆盖:

  • ✅ 字典加载与解析
  • ✅ 泛解析检测
  • ✅ DNS 解析功能
  • ✅ HTTP 服务验证
  • ✅ 域名提取与正则匹配
  • ✅ WHOIS 查询
  • ✅ CT 证书查询

输出格式

子域名扫描结果

[
  {
    "domain": "www.example.com",
    "ips": ["93.184.216.34"],
    "status": 200,
    "server": "nginx",
    "size": 1256
  }
]

过期域名扫描结果

{"domain": "example.com", "available": false}
{"domain": "expired-domain.com", "available": true}

性能指标

  • DNS 解析: 100+ 并发(可配置)
  • WHOIS 查询: 50+ 并发(可配置)
  • HTTP 验证: 100+ 并发(可配置)
  • 内存占用: < 100MB(典型场景)

最佳实践

  1. 字典选择: 使用高质量的子域名字典可显著提升发现率
  2. 并发控制: 根据网络带宽和目标服务器承载能力调整并发数
  3. 结果验证: 建议对扫描结果进行二次验证
  4. 合规使用: 仅对授权目标进行扫描

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request。


注意: 本工具仅供安全研究和授权测试使用,请勿用于非法用途。

About

SubHunter 是一款基于 Python 的异步子域名检测器,支持异步 DNS 解析和 HTTP 状态检测,帮助安全研究人员和开发者快速发现目标域名的有效子域名。它采用高性能的 uvloop 事件循环和 aiohttp 实现,具备速度快、准确度高的特点。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages