Cross-platform network scan library
with the aim of being lightweight and fast.
Add netscan
to your dependencies
toml:Cargo.toml
[dependencies]
netscan = "0.5.0"
Port Scan Example ```rust extern crate netscan; use netscan::PortScanner; use netscan::PortScanType; use netscan::ScanStatus; use std::time::Duration; use std::net::{IpAddr, Ipv4Addr};
fn main() { let mut portscanner = match PortScanner::new(None) { Ok(scanner) => (scanner), Err(e) => panic!("Error creating scanner: {}", e), }; portscanner.setdstip(IpAddr::V4(Ipv4Addr::new(192, 168, 1, 1))); portscanner.setdstportrange(1, 1000); //portscanner.addtargetport(22); //portscanner.addtargetport(80); //portscanner.addtargetport(443); portscanner.setscantype(PortScanType::SynScan); portscanner.settimeout(Duration::frommillis(10000)); //portscanner.setwaittime(Duration::frommillis(10)); portscanner.runscan(); let result = portscanner.getscanresult(); print!("Status: "); match result.scanstatus { ScanStatus::Done => {println!("Done")}, ScanStatus::Timeout => {println!("Timed out")}, _ => {println!("Error")}, } println!("Open Ports:"); for port in result.ports { println!("{:?}", port); } println!("Scan Time: {:?}", result.scantime); match portscanner.getscantype() { PortScanType::ConnectScan => {}, _=> { if portscanner.getwaittime() > Duration::frommillis(0) { println!("(Including {:?} of wait time)", portscanner.getwaittime()); } }, } } ```
For more details see Examples
This library requires the ability to create raw sockets. Execute with administrator privileges.