#scan #security #networking #dns #web

yanked nerve_host

Cross-platform host scan library (for nerve ecosystem)

0.2.1 Feb 27, 2021
0.2.0 Feb 21, 2021

#131 in #scan


Used in nerve

MIT/Apache

34KB
659 lines

nerve Crates.io License

Security scan library with the aim of being lightweight and fast.
nerve provides a cross-platform API for network / security scan
(for security testing, network management, evaluation)
using Rust.
It is currently in alpha stage.

Features

  • PORT SCAN
  • HOST SCAN
  • URI SCAN
  • DOMAIN SCAN

Usage

Add nerve to your dependencies

[dependencies]
nerve = "0.2.1"
  • Structs that provide each function
    • PortScanner
    • HostScanner
    • UriScanner
    • DomainScanner
  • Basic usage of each struct
    • ::new() returns a Scanner.
    • Set up the scanner (see Examples)
    • ::run_scan() Run scan with current settings.
    • Results are stored in ::scan_result
    • ::get_result() returns a scan resut.

Example

Port Scan Example

extern crate nerve_port;
use nerve_port::PortScanner;
use nerve_port::PortScanType;
use nerve_port::ScanStatus;
use std::time::Duration;

fn main() {
    let mut port_scanner = match PortScanner::new(None, None) {
        Ok(scanner) => (scanner),
        Err(e) => panic!("Error creating scanner: {}", e),
    };
    port_scanner.set_target_ipaddr("192.168.1.92");
    port_scanner.set_range(1, 1000);
    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);
}

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 root user privileges.

Dependencies

~3–5MB
~90K SLoC