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 中使用

GPL-3.0 或更高版

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

另请参阅提供的 ping 示例qsc 工具

依赖项

~19-33MB
~590K SLoC