MMahesa/port-scanner
GitHub: MMahesa/port-scanner
一款基于 Go 的 CLI 端口扫描工具,旨在以简洁高效的方式完成 TCP 端口探测与基础 Banner 识别。
Stars: 0 | Forks: 0
# port-scanner
基于 Go 的 CLI 工具,用于对特定主机进行 TCP 端口扫描。
## 概述
`port-scanner` 旨在以简单、快速且易于直接在终端中运行的方式进行 TCP 端口扫描。该工具支持单个端口和端口范围、并行扫描,并且输出可以直接查看或保存到文件中。扫描结果会进行排序,以便优先显示已开放的端口;对于特定端口,该工具还会尝试读取初始的 banner(如果可用)。
## 要求
- Go 1.24 或更高版本
## 安装
直接从源码运行:
```
go run ./cmd/port-scanner --host 127.0.0.1 --ports 22,80,443
```
或者编译为二进制文件:
```
go build -o port-scanner ./cmd/port-scanner
./port-scanner --host 127.0.0.1 --ports 22,80,443
```
## 功能
- 支持单个端口和端口范围
- 支持可配置 worker 数量的并行扫描
- 支持 `table`、`json` 和 `csv` 格式的输出
- 支持将结果保存到文件
- 支持仅显示已开放端口的选项
- 对有响应的端口进行简单的 banner grabbing
- 在终端运行扫描时显示进度指示器
- 扫描结果摘要
- 包含针对解析器和扫描流程的基础测试
## 运行项目
```
go run ./cmd/port-scanner --host 127.0.0.1 --ports 22,80,443,8000-8100
```
## 选项
- `--host` 目标主机或 IP
- `--ports` 端口列表,例如 `22,80,443,8000-8100`
- `--timeout` 每个端口的连接超时时间
- `--concurrency` 并行 worker 数量
- `--format` `table`、`json` 或 `csv`
- `--output` 将结果保存到文件
- `--open-only` 仅显示已开放的端口
## 使用示例
基础扫描:
```
go run ./cmd/port-scanner --host scanme.nmap.org --ports 22,80,443
```
JSON 输出:
```
go run ./cmd/port-scanner --host 127.0.0.1 --ports 22-30 --format json
```
将结果保存到文件:
```
go run ./cmd/port-scanner --host 127.0.0.1 --ports 22-30 --format json --output results.json
```
CSV 输出:
```
go run ./cmd/port-scanner --host 127.0.0.1 --ports 22-30 --format csv
```
仅显示已开放的端口:
```
go run ./cmd/port-scanner --host 127.0.0.1 --ports 1-1024 --open-only
```
## 输出示例
```
Target: scanme.nmap.org
PORT STATUS LATENCY DETAIL
22 open 369ms connection established
80 open 369ms connection established
443 closed 369ms connection refused
Ringkasan: total=3 terbuka=2 tertutup=1
```
## 终端截图
标签:EVTX分析, Go, Ruby工具, 命令行工具, 并发编程, 插件系统, 数据统计, 端口扫描, 网络工具