Michaelmk708/rust-port_scanner
GitHub: Michaelmk708/rust-port_scanner
一个基于 Rust 的高并发命令行端口扫描器,通过多线程和 MPSC 通道实现快速、安全的端口发现。
Stars: 0 | Forks: 0
# 🚀 并发 Rust 端口扫描器
一个完全使用 Rust 构建的极速、多线程命令行端口扫描器。
这个项目旨在探索底层网络 socket、Rust 严格的内存安全,以及使用线程和消息通道实现的高性能并发。
## ✨ 功能
* **极致并发:** 为每个正在扫描的端口生成独立的后台线程,以最大限度地减少网络等待时间。
* **MPSC 通道:** 利用 Rust 的 `std::sync::mpsc`(多生产者,单消费者)通道,安全地将数百个独立线程发现的开放端口结果传回主线程,且不会发生数据竞争。
* **严格的 CLI 解析:** 使用 `clap` crate 对目标 IP 地址和端口范围执行严格的、强类型的解析。
* **连接超时:** 通过强制执行严格的 socket 连接限制,防止在数据包丢失时发生挂起。
## 🛠️ 架构亮点
该扫描器没有采用线性扫描(对于 6.5 万个端口可能需要数小时),而是:
1. 解析目标 IP 和范围。
2. 创建一个 `mpsc` 发送器/接收器通道。
3. 同时为范围内的*每个*端口触发一个分离的 `std::thread`。
4. 在主线程上丢弃发送器,并通过接收器动态等待结果。
## 📦 安装
确保你的机器上已安装 [Rust 和 Cargo](https://rustup.rs/)。
```
# 克隆 repository
git clone [https://github.com/YOUR_USERNAME/port-scanner.git](https://github.com/YOUR_USERNAME/port-scanner.git)
cd port-scanner
# 为最大化性能 build 项目
cargo build --release
🚀 Usage
You can run the scanner directly via cargo or by executing the compiled binary.
View the Help Menu:
Bash
cargo run -- --help
Run a Scan:
Provide a target IP (-t), a starting port (-s), and an ending port (-e).
Bash
# 扫描 Google 的公共 DNS 以查找 open ports
cargo run -- -t 8.8.8.8 -s 50 -e 100
(Note: For maximum speed, run the compiled binary located in target/release/port-scanner rather than using cargo run).
⚠️ Disclaimer
This tool is for educational and network diagnostic purposes only. Only scan IP addresses and networks that you own or have explicit authorization to test.
```
标签:Rust, 可视化界面, 并发编程, 插件系统, 数据统计, 端口扫描, 网络流量审计, 网络编程, 通知系统