davestinhast/rust-port-scanner
GitHub: davestinhast/rust-port-scanner
基于 Rust 和 Tokio 的异步 TCP 端口扫描器,支持高并发连接和可选的 banner 读取,帮助用户快速发现目标主机开放的端口及服务信息。
Stars: 0 | Forks: 0
# rust-port-scanner
用 Rust 编写的并发端口扫描器。它使用 Tokio 来同时处理数百个连接而不阻塞程序,因此速度非常快。它还可以尝试读取在每个开放端口上运行的服务的 banner。
## 工作原理
与其检查一个端口并等待响应后再检查下一个(速度慢),不如通过可配置的并发限制同时打开所有连接。
```
┌─ Puerto 22 → ABIERTO (SSH-2.0-OpenSSH)
├─ Puerto 80 → ABIERTO (HTTP/1.1 200 OK)
Host objetivo ──────┼─ Puerto 443 → ABIERTO
├─ Puerto 81 → cerrado (timeout)
└─ Puerto 82 → cerrado (timeout)
```
内部的 semaphore 控制同时打开的连接数量,以免使网络或系统超载。
## 安装说明
你需要先[安装 Rust](https://rustup.rs/)。
```
git clone https://github.com/davestinhast/rust-port-scanner.git
cd rust-port-scanner
cargo build --release
```
编译生成的二进制文件位于 `target/release/scanner`。
## 用法
```
# 扫描 host 的 1 到 1024 端口
./scanner --host 192.168.1.1
# 带更短 timeout 的自定义范围
./scanner --host ejemplo.com --start 1 --end 65535 --timeout-ms 300
# 带 banner 检测
./scanner --host 192.168.1.1 --banner
# 更多并发(更快,更激进)
./scanner --host 192.168.1.1 --concurrency 500
# 查看所有选项
./scanner --help
```
**示例输出:**
```
Escaneando 192.168.1.1 (puertos 1-1024)...
PUERTO BANNER
--------------------------------------------------
22 SSH-2.0-OpenSSH_8.9p1
80 HTTP/1.1 200 OK
443 abierto
Total: 3 puertos abiertos.
```
## 选项
| Flag | 描述 | 默认值 |
|------|-------------|-------------------|
| `--host` | 目标 IP 或 hostname | 必填 |
| `--start` | 起始端口 | 1 |
| `--end` | 结束端口 | 1024 |
| `--timeout-ms` | 单个端口超时时间(毫秒) | 500 |
| `--banner` | 尝试读取 banner | 禁用 |
| `--concurrency` | 并发连接数 | 200 |
## 环境要求
- Rust 1.70 或更高版本
- 连接到目标的网络
- 扫描目标的权限(请勿扫描不属于你的目标)
## 许可证
MIT。
标签:DNS查询工具, Rust, 可视化界面, 异步编程, 插件系统, 端口扫描器, 系统编程, 网络工具, 网络流量审计, 通知系统