kazee72/portygon
GitHub: kazee72/portygon
一款用 Rust 编写的快速异步端口扫描工具,帮助安全人员和运维人员高效发现目标主机开放端口。
Stars: 1 | Forks: 0
# Portygon
一个使用 Rust 编写的快速、轻量级 TCP 端口扫描器。
## 功能
- 异步扫描,支持高达 100 个并发连接
- Banner 抓取 — 检测开放端口上的服务信息
- HTTP 感知的 banner 解析 — 提取状态行和 Server 头
- DNS 解析 — 接受主机名或 IP 地址作为目标
- 隐蔽模式 — 随机延迟(2–5秒)的顺序扫描
- JSON 输出,适用于脚本和自动化
## 安装
```
git clone https://github.com/kazee72/portygon.git
cd portygon
cargo build --release
```
二进制文件将位于 `target/release/portygon`。
## 用法
```
portygon [OPTIONS]
```
### 选项
| 标志 | 默认值 | 描述 |
|---|---|---|
| `-p, --ports` | `1-1024` | 要扫描的端口 — 单个、范围或逗号分隔 |
| `-s, --stealth` | 关闭 | 随机延迟 2–5秒 的顺序扫描 |
| `-j, --json` | 关闭 | 以 JSON 格式输出结果 |
| `-V, --version` | — | 打印版本信息 |
### 示例
扫描主机的默认端口 (1–1024):
```
portygon 192.168.1.1
```
扫描指定端口:
```
portygon 192.168.1.1 -p 22,80,443
```
扫描端口范围:
```
portygon 192.168.1.1 -p 1-10000
```
范围和单个端口的混合:
```
portygon 192.168.1.1 -p 22,80,443,8000-8080
```
使用主机名:
```
portygon example.com -p 80,443
```
JSON 输出:
```
portygon 192.168.1.1 -p 1-1024 --json
```
隐蔽模式:
```
portygon 192.168.1.1 -p 80,443 --stealth
```
### 示例输出
```
[Open Ports]
22: SSH-2.0-OpenSSH_8.9
80: HTTP/1.1 200 OK | Server: nginx/1.18.0
443: HTTP/1.1 200 OK | Server: nginx/1.18.0
```
JSON 模式:
```
{
"target": "192.168.1.1",
"ports_scanned": 1024,
"open_ports": [
{ "port": 22, "banner": "SSH-2.0-OpenSSH_8.9" },
{ "port": 80, "banner": "HTTP/1.1 200 OK | Server: nginx/1.18.0" }
]
}
```
## 运行测试
```
cargo test
```
慢速测试(隐蔽模式、大范围)被标记为 `#[ignore]`,可以显式运行:
```
cargo test -- --ignored
```
标签:Rust, 命令行工具, 安全工具, 异步编程, 插件系统, 数据统计, 端口扫描, 网络流量审计, 通知系统