cve_explorer_pro 0.1.1

A comprehensive CVE vulnerability analysis library with deep exploitation path exploration and root cause analysis
Documentation
use cve_explorer_pro::{CVEFetcher, ExploitationPathAnalyzer, display_exploitation_analysis};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    println!("💣 CVE Explorer Pro - Exploitation Analysis Example");
    
    // Initialize the fetcher
    let fetcher = CVEFetcher::new(None);
    
    // Analyze a network-based vulnerability
    let cve_id = "CVE-2021-34527";
    println!("📡 Fetching CVE data for exploitation analysis: {}", cve_id);
    
    match fetcher.fetch_cve(cve_id).await {
        Ok(cve) => {
            println!("✅ CVE data loaded");
            
            // Perform exploitation path analysis
            let exploit_analyzer = ExploitationPathAnalyzer;
            let exploitation = exploit_analyzer.analyze_exploitation_path(&cve);
            
            // Display the exploitation analysis
            display_exploitation_analysis(&cve, &exploitation);
            
            // Show key metrics
            println!("\n📊 EXPLOITATION METRICS:");
            println!("Attack Surface Entry Points: {}", exploitation.attack_surface.entry_points.len());
            println!("Trust Boundaries: {}", exploitation.attack_surface.trust_boundaries.len());
            println!("Privilege Escalation Steps: {}", exploitation.privilege_escalation_chain.len());
            println!("Overall Complexity Score: {:.1}", exploitation.exploitation_complexity.overall_score);
            println!("Difficulty Level: {:?}", exploitation.exploitation_complexity.difficulty_level);
            
            // Show required skills
            println!("\n🎯 REQUIRED SKILLS:");
            for skill in &exploitation.exploitation_complexity.required_skills {
                println!("{} ({:?})", skill.skill, skill.proficiency_required);
            }
            
            // Time estimates
            let time = &exploitation.exploitation_complexity.time_estimate;
            println!("\n⏱️  TIME ESTIMATES:");
            println!("  Minimum: {} hours", time.min_hours);
            println!("  Typical: {} hours", time.typical_hours);
            println!("  Maximum: {} hours", time.max_hours);
        }
        Err(e) => {
            eprintln!("❌ Error: {}", e);
        }
    }
    
    Ok(())
}