Treyson-Grange/rust-tcp-port-scanner
GitHub: Treyson-Grange/rust-tcp-port-scanner
一个用 Rust 和 Tokio 编写的异步 TCP 端口扫描器,支持并发探测指定范围内的端口开放状态并输出结构化报告。
Stars: 0 | Forks: 0
# TCP 端口扫描器
一个使用 [Tokio](https://tokio.rs/) 编写的异步 TCP 端口扫描器。支持并发探测可配置范围内的端口,在扫描前解析主机名,并以结构化的格式报告结果。
开发此项目是为了学习 Rust。
## 功能
- 通过 Tokio 异步任务进行并发扫描
- 显式的主机名/DNS 解析,并提供清晰的错误报告
- 单连接超时处理
- 结构化输出,包含开放端口摘要和扫描统计信息
- `--details` 标志可显示每个端口的完整结果
- 基于 Clap 的 CLI,支持 `--help`、参数验证和合理的默认值
## 要求
- [Rust](https://www.rust-lang.org/tools/install)(edition 2024,stable 工具链)
## 构建
```
cargo build --release
```
编译后的二进制文件将位于 `target/release/tcp_port_scanner`。
## 用法
```
tcp_port_scanner [HOST] [START_PORT] [END_PORT] [OPTIONS]
```
### 参数
| 参数 | 描述 | 默认值 |
| ------------ | ----------------------------- | ----------- |
| `HOST` | 目标主机名或 IP 地址 | `127.0.0.1` |
| `START_PORT` | 扫描范围内的起始端口 | `1` |
| `END_PORT` | 扫描范围内的结束端口 | `65535` |
### 选项
| 标志 | 描述 |
| ----------- | ------------------------------------------- |
| `--details` | 打印每个端口的结果,而不仅仅是开放的端口 |
| `--help` | 打印帮助信息 |
### 示例
扫描 localhost 的所有端口:
```
cargo run -- localhost
```
扫描远程主机的 1–1024 端口:
```
cargo run -- scanme.nmap.org 1 1024
```
扫描并输出每个端口的完整详情:
```
cargo run -- localhost 20 100 --details
```
直接运行 release 构建版本:
```
./target/release/tcp_port_scanner localhost 1 1024
```
## 示例输出
```
============================================
TCP PORT SCANNER
Target : localhost
Range : 1 - 1024
============================================
Resolved localhost -> 127.0.0.1
[*] Port 80 open
[*] Port 631 open
--- Open Ports ---
[OPEN] Port 80
[OPEN] Port 631
============================================
SCAN COMPLETE
Scanned : 1024 ports
Open : 2
Closed : 1022
============================================
```
## 项目结构
```
src/
args.rs — CLI argument definitions (clap)
scanner.rs — Async scanning engine, hostname resolution, TCP connection logic
utils.rs — Output formatting and result reporting
main.rs — Entry point; parses args and invokes scanner
```
### 待办事项
- [ ] 通过 CLI 参数允许输出到文件。
- [ ] 通过将知名端口映射到其对应的服务来提高可读性。
- [ ] 支持多主机 / CIDR 范围。接受一个主机列表或子网,并扫描所有目标。
标签:Rust, Tokio, 可视化界面, 异步编程, 插件系统, 数据统计, 端口扫描, 网络工具, 网络流量审计, 通知系统