10 个版本 (5 个重大变更)
0.6.0 | 2022年6月13日 |
---|---|
0.5.0 | 2022年6月8日 |
0.4.1 | 2022年6月7日 |
0.3.3 | 2022年5月24日 |
0.1.0 | 2022年5月10日 |
#20 in #scanning
在 qsc 中使用
43KB
906 行
快速网络扫描库
Rust 库,用于异步扫描网络主机。
目前支持以下扫描模式:
- TCP 连接;
- Ping (ICMP 回显 / 回显应答)。
注意:为了正确使用库,您可能需要增加允许的最大打开文件数。例如。
ulimit -n 10000
注意:对于 ping 扫描模式,您需要
root
或其他适当的权限(即 CAP_NET_RAW)。
在 crates.io 上查看库。
用法
依赖项 (Cargo.toml
)
[dependencies]
qscan = "0.6.0"
tokio = { version = "1", features = ["rt-multi-thread"] }
或者,为了启用结果结构的 json 序列化,激活 serialize
功能
[dependencies]
qscan = { version = "0.6.0" , features = ["serialize"] }
tokio = { version = "1", features = ["rt-multi-thread"] }
然后 (src/main.rs
)
从 TCP 连接扫描示例
use qscan::{QSPrintMode, QScanResult, QScanTcpConnectState, QScanType, QScanner};
use tokio::runtime::Runtime;
pub fn main() {
let mut scanner = QScanner::new("8.8.8.8,127.0.0.1", "53,80,443");
scanner.set_batch(5000);
scanner.set_timeout_ms(2000);
scanner.set_ntries(1);
scanner.set_scan_type(QScanType::TcpConnect);
scanner.set_print_mode(QSPrintMode::NonRealTime);
let res: &Vec<QScanResult> = Runtime::new().unwrap().block_on(scanner.scan_tcp_connect());
for r in res {
if let QScanResult::TcpConnect(sa) = r {
if sa.state == QScanTcpConnectState::Open {
println!("{}", sa.target);
}
}
}
}
依赖项
~19-33MB
~590K SLoC