netscan-0.2.0 has been yanked.
netscan

Cross-platform network scan library
with the aim of being lightweight and fast.
Features
Usage
Add netscan to your dependencies
[dependencies]
netscan = "0.2.0"
Example
Port Scan Example
extern crate netscan;
use netscan::PortScanner;
use netscan::PortScanType;
use netscan::ScanStatus;
use std::time::Duration;
fn main() {
let mut port_scanner = match PortScanner::new(None) {
Ok(scanner) => (scanner),
Err(e) => panic!("Error creating scanner: {}", e),
};
port_scanner.set_target_ipaddr("192.168.1.8");
port_scanner.set_range(1, 1024);
port_scanner.set_scan_type(PortScanType::SynScan);
port_scanner.set_timeout(Duration::from_millis(10000));
port_scanner.run_scan();
let result = port_scanner.get_result();
print!("Status: ");
match result.scan_status {
ScanStatus::Done => {println!("Normal end")},
ScanStatus::Timeout => {println!("Timed out")},
_ => {println!("Error")},
}
println!("Open Ports:");
for port in result.open_ports {
println!("{}", port);
}
println!("Scan Time: {:?}", result.scan_time);
match port_scanner.get_scan_type() {
PortScanType::ConnectScan => {},
_=> {
if port_scanner.get_wait_time() > Duration::from_millis(0) {
println!("(Including {:?} of wait time)", port_scanner.get_wait_time());
}
},
}
}
For more details see Examples
Supported platform
- Linux
- macOS(OS X)
- Windows
Additional Notes
This library requires the ability to create raw sockets. Execute with administrator privileges.
(The default SYN SCAN is recommended, but CONNECT SCAN without administrator privileges is also possible.)