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, 可视化界面, 异步编程, 插件系统, 数据统计, 端口扫描, 网络工具, 网络流量审计, 通知系统