2 个版本
0.2.1 | 2021 年 2 月 27 日 |
---|---|
0.2.0 | 2021 年 2 月 21 日 |
#16 in #port-scan
用于 nerve
40KB
585 行
nerve
旨在轻量且快速的网络安全扫描库。
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 用户权限执行。
依赖项
~8–12MB
~248K SLoC