domainscan

Cross-platform (Sub)Domain scan library.

Features

Usage

Add domainscan to your dependencies toml [dependencies] domainscan = "0.1.0"

Example (Active scan)

```rust use domainscan::scanner::DomainScanner; use domainscan::result::ScanStatus; use tokio::runtime::Runtime; use std::fs::readtostring; use std::time::Duration; use std::thread;

fn main() { let mut domainscanner = match DomainScanner::new(){ Ok(scanner) => (scanner), Err(e) => panic!("Error creating scanner: {}", e), }; let apexdomain = String::from("google.com"); domainscanner.setbasedomain(apexdomain); let data = readtostring("namelist.txt"); let text = match data { Ok(content) => content, Err(e) => {panic!("Could not open or find file: {}", e);} }; let wordlist: Vec<&str> = text.trim().split("\n").collect(); domainscanner.setwordlist(wordlist); domainscanner.settimeout(Duration::frommillis(10000)); let rx = domainscanner.getprogressreceiver(); let rt = Runtime::new().unwrap(); // Run scan let handle = thread::spawn(move|| { rt.blockon(async { domainscanner.scan().await }) }); // Print progress while let Ok(domain) = rx.lock().unwrap().recv() { //println!("Debug: {}", domain); } let result = handle.join().unwrap(); print!("Status: "); match result.scanstatus { ScanStatus::Done => {println!("Done")}, ScanStatus::Timeout => {println!("Timed out")}, _ => {println!("Error")}, } println!("Domain Scan Result:"); for domain in result.domains { println!("{}", domain.domainname); for ip in domain.ips{ println!(" {}", ip); } } println!("Scan Time: {:?}", result.scan_time); } ```