MMahesa/port-scanner

GitHub: MMahesa/port-scanner

一款基于 Go 的 CLI 端口扫描工具,旨在以简洁高效的方式完成 TCP 端口探测与基础 Banner 识别。

Stars: 0 | Forks: 0

# port-scanner
基于 Go 的 CLI 工具,用于对特定主机进行 TCP 端口扫描。 Go badge CLI badge Focus badge
## 概述 `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 ``` ## 终端截图 ![终端输出](https://raw.githubusercontent.com/MMahesa/port-scanner/main/assets/terminal-output.png)
标签:EVTX分析, Go, Ruby工具, 命令行工具, 并发编程, 插件系统, 数据统计, 端口扫描, 网络工具