crazywifi/Rust_Port_Scanner
GitHub: crazywifi/Rust_Port_Scanner
一个用 Rust 编写的轻量级多线程 TCP 端口扫描器,提供 Nmap 风格的输出格式,无需外部依赖即可快速发现目标主机的开放端口和服务。
Stars: 0 | Forks: 0
# 🔍 Rust 端口扫描器
一个使用 Rust 编写的快速、多线程 TCP 端口扫描器,提供 **nmap 风格的输出**。专为速度和简洁性而构建 —— 无需外部依赖。
## ✨ 功能特性
- ⚡ **多线程扫描** —— 默认将端口分配至多达 100 个并发线程
- 🎯 **灵活的端口目标设定** —— 支持单个端口、逗号分隔的列表或端口范围
- 🏷️ **服务识别** —— 识别 70 余个知名端口(SSH、HTTP、MySQL、Redis 等)
- 📊 **Nmap 风格输出** —— 熟悉的 `PORT / STATE / SERVICE` 表格格式
- 📈 **实时进度指示器** —— 每扫描 50 个端口更新一次
- 🔌 **三种端口状态** —— `open`、`closed`、`filtered`
## 📦 安装
### 前置条件
- [Rust](https://www.rust-lang.org/tools/install) 1.56+(2021 edition)
### 从源码构建
```
git clone https://github.com/your-username/Rust_Port_Scanner.git
cd Rust_Port_Scanner
cargo build --release
```
编译后的二进制文件位于 `target/release/port_scanner`。
### Windows 预编译二进制文件
仓库根目录中包含适用于 Windows x86-64 的预编译 `port_scanner.exe`。
## 🚀 用法
```
port_scanner [OPTIONS]
```
### 参数
| 参数 | 描述 |
|----------|-------------|
| `` | 目标主机名或 IP 地址(必填) |
### 选项
| 标志 | 值 | 默认值 | 描述 |
|------|-------|---------|-------------|
| `-p` | `` | `1-1024` | 要扫描的端口(见下方格式说明) |
| `-T` | `` | `500` | 每个端口的连接超时时间(毫秒) |
| `-t` | `` | `100` | 使用的线程数量 |
## 📋 示例
**扫描主机的默认端口 1–1024:**
```
./port_scanner scanme.nmap.org
```
**扫描特定范围:**
```
./port_scanner 192.168.1.1 -p 1-65535
```
**扫描以逗号分隔的端口列表:**
```
./port_scanner example.com -p 22,80,443,3306,8080
```
**混合端口范围与单独端口:**
```
./port_scanner 10.0.0.1 -p 1-100,443,8080-8090
```
**为缓慢/远程主机增加超时时间:**
```
./port_scanner example.com -p 1-1024 -T 1000
```
**降低线程数以进行更隐蔽的扫描:**
```
./port_scanner 192.168.1.1 -p 1-1024 -t 20
```
## 🖥️ 输出示例
```
Starting RustScan - Port Scanner
A fast TCP connect scanner written in Rust
Scanning 1024 port(s) on scanme.nmap.org (timeout: 500ms, threads: 100)
Progress: 1024/1024 ports scanned...
Nmap scan report for scanme.nmap.org
Host is up (0.0023s latency).
Not shown: 1020 closed ports, 2 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
9929/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 3.41 seconds — 4 open port(s)
```
## 🔌 端口状态参考
| 状态 | 含义 |
|-------|---------|
| `open` | TCP 连接被接受 —— 服务正在监听 |
| `closed` | 连接被主动拒绝(`Connection refused`) |
| `filtered` | 无响应或发生错误 —— 可能有防火墙/过滤器拦截 |
## 🗂️ 已识别服务
该扫描器将 70 余个知名端口映射到服务名,包括:
| 端口 | 服务 | 端口 | 服务 |
|------|---------|------|---------|
| 21 | ftp | 3306 | mysql |
| 22 | ssh | 3389 | ms-wbb-server (RDP) |
| 25 | smtp | 5432 | postgresql |
| 53 | domain (DNS) | 5900 | vnc |
| 80 | http | 6379 | redis |
| 443 | https | 9200 | elasticsearch |
| 1433 | ms-sql-s | 27017 | mongod |
| 2375 | docker | 9092 | kafka |
未在列表中的端口将被标记为 `unknown`。
## ⚠️ 法律免责声明
本工具仅供**授权网络测试**使用。未经明确许可扫描主机可能会违反当地法律和网络政策。作者不对任何滥用行为负责。
## 🛠️ 项目结构
```
Rust_Port_Scanner/
├── main.rs # Full source — scanner logic, CLI parser, output formatter
├── Cargo.toml # Package manifest
├── port_scanner.exe # Pre-built Windows binary
└── README.md
```
## 📄 许可证
本项目为开源项目。有关详细信息,请参阅 [LICENSE](LICENSE)。
标签:Nmap替代, Qt框架, Rust, TCP扫描, 云存储安全, 可视化界面, 并发处理, 插件系统, 数据泄露防护, 数据统计, 服务识别, 漏洞赏金平台, 端口扫描, 端口状态, 网络安全, 网络扫描, 网络探测, 网络流量审计, 通知系统, 隐私保护