0xPwn3z/rusty-port-scanner

GitHub: 0xPwn3z/rusty-port-scanner

一款基于 Rust 和 Tokio 的异步 TCP 端口扫描器,支持并发控制和超时配置,可快速发现目标主机的开放端口。

Stars: 0 | Forks: 0

# Rusty 端口扫描器 一个使用 Rust 编写的快速、异步 TCP 端口扫描器。 `rusty-port-scanner` 可以通过扫描单个端口或一定范围的端口,帮助你快速检查目标主机上哪些 TCP 端口处于开放状态,支持配置超时时间和并发数。 ## 功能特性 - 使用 `tokio` 进行异步 TCP 扫描 - 可配置扫描范围(`start-port` 到 `end-port`) - 可调节每次连接尝试的超时时间 - 使用信号量 (Semaphore) 控制最大并发数 - 由 `clap` 驱动的简洁 CLI ## 环境要求 - Rust 工具链 (stable, recent) - Cargo (随 Rust 附带) 如果需要,请安装 Rust: ``` winget install Rustlang.Rustup ``` ## 安装说明 ### 方式 1:从源码运行 ``` git clone https://github.com/0xPwn3z/rusty-port-scanner.git Set-Location rusty-port-scanner cargo run -- --help ``` ### 方式 2:构建 release 二进制文件 ``` Set-Location rusty-port-scanner cargo build --release ``` 二进制文件位置: - Windows: `target\release\rusty-port-scanner.exe` - Linux/macOS: `target/release/rusty-port-scanner` ### 方式 3:使用 Cargo 本地安装 ``` Set-Location rusty-port-scanner cargo install --path . ``` 然后运行: ``` rusty-port-scanner --help ``` ## 使用方法 ``` rusty-port-scanner [OPTIONS] --address
--start-port ``` ### CLI 选项 | 选项 | 类型 | 必填 | 默认值 | 描述 | | --- | --- | --- | --- | --- | | `-a, --address
` | string | 是 | - | 目标 IP 或主机名 | | `-s, --start-port ` | u16 | 是 | - | 起始扫描端口 | | `-e, --end-port ` | u16 | 否 | `start-port` | 结束扫描端口 | | `-t, --timeout ` | u64 | 否 | `5` | 每次连接的超时时间(秒) | | `-c, --concurrency ` | usize | 否 | `30` | 最大并发连接尝试数 | | `-h, --help` | flag | 否 | - | 显示帮助信息 | ## 示例 ### 扫描单个端口 ``` rusty-port-scanner --address 127.0.0.1 --start-port 22 ``` ### 扫描端口范围 ``` rusty-port-scanner --address scanme.nmap.org --start-port 1 --end-port 1024 ``` ### 提高并发数以增加速度 ``` rusty-port-scanner --address 192.168.1.10 --start-port 1 --end-port 1000 --concurrency 200 ``` ### 使用更短的超时时间 ``` rusty-port-scanner --address 10.0.0.5 --start-port 1 --end-port 65535 --timeout 2 ``` ## 工作原理 扫描器执行以下步骤: 1. 使用 `clap` 解析 CLI 参数。 2. 遍历请求的端口范围。 3. 使用 `tokio` 生成异步任务。 4. 使用 `Semaphore` 限制活动任务数量(`--concurrency`)。 5. 通过 `tokio::time::timeout` 尝试对每个端口建立 TCP 连接。 6. 打印开放的端口,并在所有任务完成后退出。 ## 局限性 - 仅扫描 TCP 端口。 - 执行连接扫描(非 SYN/半开扫描)。 - 输出较为简单,不导出为文件格式 (JSON/CSV)。 - 过高的并发度可能导致本地资源紧张(套接字/CPU)。 - 网络防火墙和 IDS/IPS 可能会限制或阻止扫描结果。 ## 安全与道德规范 未经授权的端口扫描可能被视为恶意行为。 - 仅扫描你拥有或被授权测试的资产。 - 优先在受控的实验环境中进行。 - 遵守当地法律、组织政策和交战规则。 ## 开发 ### 项目结构 - `src/main.rs`: CLI 解析和扫描逻辑 - `Cargo.toml`: 包元数据和依赖项 ### 构建与检查 ``` cargo fmt cargo clippy -- -D warnings cargo build cargo test ``` ## 故障排除 - `connection timed out`:增加 `--timeout`,减少 `--concurrency`,检查网络路径。 - `no open ports found`:确认目标主机可达且有服务在监听。 - DNS/主机名问题:使用直接 IP 进行测试以排除名称解析问题。 - 权限或终端保护问题:在允许的环境中运行并检查本地安全控制。 ## 许可证 本项目采用 MIT 许可证授权。 完整文本请参阅 `LICENSE`。 ## 作者 版权所有 (c) 2026 `0xPwn3z`
标签:Clap, Rust, TCP协议, Tokio, 二进制发布, 可视化界面, 并发控制, 开源工具, 异步编程, 插件系统, 数据统计, 端口扫描, 网络安全, 网络流量审计, 通知系统, 隐私保护