#scan #security #networking #dns #web #port-scan

已删除 nerve

跨平台安全扫描库

0.2.1 2021年2月27日
0.2.0 2021年2月21日
0.1.1 2021年2月15日
0.1.0 2021年2月14日
0.0.1-placeholder 2020年12月4日

#19 in #port-scan

MIT/Apache

76KB
644

nerve Crates.io 许可

旨在轻量快速的安全扫描库。
nerve 提供了跨平台的 API 用于网络/安全扫描
(用于安全测试、网络管理、评估)
使用 Rust。
目前处于 alpha 阶段。

功能

  • 端口扫描
  • 主机扫描
  • URI 扫描
  • 域名扫描

用法

nerve 添加到依赖项

[dependencies]
nerve = "0.2.1"
  • 提供每个功能的结构体
    • PortScanner
    • HostScanner
    • UriScanner
    • DomainScanner
  • 每个结构体的基本用法
    • ::new() 返回一个 Scanner。
    • 设置扫描器(见 示例
    • ::run_scan() 使用当前设置运行扫描。
    • 结果存储在 ::scan_result
    • ::get_result() 返回扫描结果。

示例

端口扫描示例

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);
}

更多详情请见 示例

支持的平台

  • Linux
  • macOS(OS X)
  • Windows

附加说明

此库需要创建原始套接字的能力。以 root 用户权限执行。

依赖项

~9–14MB
~278K SLoC