Skip to main content

Crate rsubdomain

Crate rsubdomain 

Source
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-resolver
pub use dns_resolver::DnsResolveResult;dns-resolver
pub use dns_resolver::DnsResolver;dns-resolver
pub use verify::DomainVerifier;verify
pub use verify::VerifyResult;verify
pub use device::list_network_devices;
pub use device::print_network_devices;
pub use device::NetworkDevice;

Modules§

device
dns_resolverdns-resolver
logger
verifyverify

Structs§

AggregatedDiscoveredDomain
按域名聚合后的发现结果
AggregatedRecordValues
按域名聚合后的记录集合
BandwidthLimiter
带宽限制器
BruteForceProgress
BruteForceState
暴破引擎的状态管理器
CdnAnalysisOptions
CdnEvidence
DiscoveredDomain
发现的域名结果
EthTable
Optscli
SpeedTestResultspeed-test
网速测试结果
SpeedTesterspeed-test
网速测试器
SubdomainBruteConfig
域名暴破配置
SubdomainBruteEngine
域名暴破引擎
SubdomainResult
域名暴破结果
SubdomainScanData
SummaryStats
汇总统计信息
VerificationResult
验证结果
WildcardDetector
泛解析检测器

Enums§

BruteForceProgressPhase
CdnConfidence
OutputFormat
输出格式枚举
PacketTransport
QueryType
DNS 查询类型

Functions§

brute_force_subdomains
便捷的域名暴破函数(使用字典文件)
brute_force_subdomains_with_config
便捷的域名暴破函数(完整配置)
brute_force_subdomains_with_dict
便捷的域名暴破函数(使用字典数组)
export_resultsoutput
导出结果到文件
export_scan_dataoutput
export_subdomain_resultsoutput
export_subdomain_results_with_optionsoutput
flush_raw_record_output
generate_summary_from_data
生成汇总统计
parse_bandwidth
解析带宽字符串为字节/秒
print_aggregated_domains
print_summary_stats
打印汇总信息
print_verification_result
实时打印验证结果
resolve_resolver_inputcli
resolve_target_domain_inputcli
resolve_target_domainscli
run_speed_testspeed-test
网速测试函数

Type Aliases§

ProgressCallback