Expand description
§rsubdomain
一个基于Rust实现的高性能子域名暴破工具库。
§特性
- 🚀 高性能: 基于原始套接字的异步DNS查询,支持高并发
- 🔍 功能丰富: 支持子域名发现、HTTP/HTTPS验证、DNS记录解析
- 📊 多格式输出: 支持JSON、XML、CSV、TXT四种输出格式
- 🌐 智能网络: 自动检测网络设备,支持手动指定网络接口
- 📈 网速测试: 内置DNS包发送速度测试功能
- 🎯 泛解析检测: 智能识别并处理泛解析域名
- ⚡ 带宽控制: 支持带宽限制,避免网络拥塞
- 🔄 智能重试: 自动处理超时和失败的DNS查询
§快速开始
§方法1: 使用便捷函数
use rsubdomain::brute_force_subdomains;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let domains = vec!["example.com".to_string()];
let results = brute_force_subdomains(
domains,
None, // dictionary_file
None, // resolvers
true, // skip_wildcard
None, // bandwidth_limit
false, // verify_mode
false, // resolve_records
false, // silent
None, // device
).await?;
println!("发现 {} 个子域名", results.len());
for result in results.iter().take(3) {
println!(" {} -> {} ({})", result.domain, result.value, result.record_type);
}
Ok(())
}§方法2: 使用配置引擎
use rsubdomain::{SubdomainBruteConfig, SubdomainBruteEngine};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = SubdomainBruteConfig {
domains: vec!["example.com".to_string()],
verify_mode: true, // 启用HTTP/HTTPS验证
resolve_records: true, // 启用DNS记录解析
cdn_detect: true, // 启用CDN识别
cdn_collapse: true, // 在聚合视图中收敛CDN多IP
bandwidth_limit: Some("5M".to_string()), // 带宽限制
silent: false,
..Default::default()
};
let engine = SubdomainBruteEngine::new(config).await?;
let results = engine.run_brute_force().await?;
println!("发现 {} 个子域名", results.len());
for result in results.iter().take(3) {
println!(" {} -> {} ({})", result.domain, result.value, result.record_type);
if let Some(verified) = &result.verified {
println!(" HTTP: {}, HTTPS: {}, HTTP存活: {}, HTTPS存活: {}",
verified.http_status.unwrap_or(0),
verified.https_status.unwrap_or(0),
verified.http_alive,
verified.https_alive
);
}
}
Ok(())
}§高级功能
§带宽控制和网速测试
use rsubdomain::{run_speed_test, brute_force_subdomains};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 网速测试(5秒)
run_speed_test(5).await?;
// 使用带宽限制进行子域名扫描
let domains = vec!["example.com".to_string()];
let results = brute_force_subdomains(
domains,
None,
None,
true,
Some("3M".to_string()), // 限制带宽为3M
false,
false,
false,
None,
).await?;
println!("发现 {} 个子域名", results.len());
Ok(())
}§使用自定义字典
use rsubdomain::brute_force_subdomains_with_dict;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let domains = vec!["example.com".to_string()];
let dictionary = vec![
"www".to_string(),
"mail".to_string(),
"ftp".to_string(),
"api".to_string(),
];
let results = brute_force_subdomains_with_dict(
domains,
dictionary,
None, // resolvers
true, // skip_wildcard
None, // bandwidth_limit
false, // verify_mode
false, // resolve_records
false, // silent
None, // device
).await?;
println!("使用自定义字典发现 {} 个子域名", results.len());
Ok(())
}Re-exports§
pub use dns_resolver::DnsRecord;dns-resolverpub use dns_resolver::DnsResolveResult;dns-resolverpub use dns_resolver::DnsResolver;dns-resolverpub use verify::DomainVerifier;verifypub use verify::VerifyResult;verifypub use device::list_network_devices;pub use device::print_network_devices;pub use device::NetworkDevice;
Modules§
- device
- dns_
resolver dns-resolver - logger
- verify
verify
Structs§
- Aggregated
Discovered Domain - 按域名聚合后的发现结果
- Aggregated
Record Values - 按域名聚合后的记录集合
- Bandwidth
Limiter - 带宽限制器
- Brute
Force Progress - Brute
Force State - 暴破引擎的状态管理器
- CdnAnalysis
Options - CdnEvidence
- Discovered
Domain - 发现的域名结果
- EthTable
- Opts
cli - Speed
Test Result speed-test - 网速测试结果
- Speed
Tester speed-test - 网速测试器
- Subdomain
Brute Config - 域名暴破配置
- Subdomain
Brute Engine - 域名暴破引擎
- Subdomain
Result - 域名暴破结果
- Subdomain
Scan Data - Summary
Stats - 汇总统计信息
- Verification
Result - 验证结果
- Wildcard
Detector - 泛解析检测器
Enums§
Functions§
- brute_
force_ subdomains - 便捷的域名暴破函数(使用字典文件)
- brute_
force_ subdomains_ with_ config - 便捷的域名暴破函数(完整配置)
- brute_
force_ subdomains_ with_ dict - 便捷的域名暴破函数(使用字典数组)
- export_
results output - 导出结果到文件
- export_
scan_ data output - export_
subdomain_ results output - export_
subdomain_ results_ with_ options output - flush_
raw_ record_ output - generate_
summary_ from_ data - 生成汇总统计
- parse_
bandwidth - 解析带宽字符串为字节/秒
- print_
aggregated_ domains - print_
summary_ stats - 打印汇总信息
- print_
verification_ result - 实时打印验证结果
- resolve_
resolver_ input cli - resolve_
target_ domain_ input cli - resolve_
target_ domains cli - run_
speed_ test speed-test - 网速测试函数