# scanPortTool **Repository Path**: go_dev/scan-port-tool ## Basic Information - **Project Name**: scanPortTool - **Description**: 一个专注于端口扫描工具开发的开源项目,提供高效、安全的网络端口检测功能,支持多种操作系统和环境。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-27 - **Last Updated**: 2026-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Port Scanner Tool 网络端口扫描工具,基于 Go 和 Nmap 实现批量主机的 TCP/UDP 全端口扫描。 ## 项目概述 本项目是一个企业级端口扫描工具,主要功能包括: - **TCP 全端口扫描** - 使用 nmap SYN 扫描 (-sS) - **UDP 端口扫描** - 扫描常用端口 (1-1000) - **主机存活检测** - 扫描前自动检测主机在线状态 - **批量扫描** - 支持 IP 段批量扫描 - **并发控制** - 可配置并发扫描数量 - **结果导出** - CSV 格式输出 - **自动压缩** - 扫描结果自动打包为 ZIP - **邮件发送** - 扫描完成后自动发送邮件 ## Nmap 安装 ### Windows 安装 #### 方法一:使用包管理器 (推荐) ```powershell # 使用 winget winget install nmap.nmap # 使用 chocolatey choco install nmap ``` #### 方法二:手动安装 1. 下载 nmap:[https://nmap.org/download.html](https://nmap.org/download.html) 2. 运行安装程序 3. 将 nmap 安装路径添加到系统 PATH ```powershell # 验证安装 nmap --version ``` ### Linux 安装 ```bash # Debian/Ubuntu apt-get install nmap # CentOS/RHEL yum install nmap # Fedora dnf install nmap ``` ### macOS 安装 ```bash # 使用 Homebrew brew install nmap ``` ## Nmap 命令多场景使用 ### 基本语法 ```bash nmap [扫描类型] [选项] [目标] ``` ### 常用扫描类型 | 参数 | 说明 | |------|------| | -sS | TCP SYN 扫描(需要管理员权限) | | -sT | TCP 连接扫描 | | -sU | UDP 扫描 | | -sV | 服务版本检测 | | -O | 操作系统检测 | | -Pn | 跳过主机发现 | | -p | 指定端口范围 | ### 场景一:快速主机存活检测 ```bash nmap -sn 192.168.1.1-254 ``` ### 场景二:TCP 全端口扫描 ```bash nmap -sS -sV -p- -Pn -T4 192.168.1.100 ``` 参数说明: - `-sS` - SYN 扫描 - `-sV` - 服务版本检测 - `-p-` - 全端口 1-65535 - `-Pn` - 跳过主机发现 - `-T4` - 快速扫描 ### 场景三:UDP 端口扫描 ```bash nmap -sU -sV -p 1-1000 -Pn -T2 192.168.1.100 ``` ### 场景四:服务漏洞检测 ```bash nmap --script="default,auth,vuln" -sS -sV -p- -Pn 192.168.1.100 ``` ### 场景五:内网快速扫描 ```bash nmap -sS -p 22,80,443,3306,5432 -Pn -T5 192.168.1.0/24 ``` ### 场景六:完整安全审计 ```bash nmap -sS -sV -sC -O -p- -Pn --script vuln 192.168.1.100 ``` ### 场景七:导出多种格式 ```bash # XML 输出 nmap -sS -sV -p- -oX scan_result.xml 192.168.1.100 # JSON 输出 nmap -sS -sV -p- -oJ scan_result.json 192.168.1.100 # Grepable 输出 nmap -sS -sV -p- -oG scan_result.txt 192.168.1.100 # 同时输出多种格式 nmap -sS -sV -p- -oA scan_result 192.168.1.100 ``` ### 常用参数组合 ```bash # 高速内网扫描 nmap -sS -p- -Pn -T5 --max-retries 1 192.168.1.100 # 慢速全面扫描(适合远程目标) nmap -sS -sV -p- -Pn -T1 --script default 192.168.1.100 # 仅显示开放端口 nmap -sS -p- -Pn --open 192.168.1.100 # 自定义端口范围 nmap -sS -p 22,80,443,8080,1000-2000 192.168.1.100 ``` ## 项目使用 ### 环境要求 - Go 1.25+ - Nmap 已安装并加入 PATH ### 运行方式 ```bash # 编译 go build -o scanner.exe ./cmd/scanner # 或使用 build.bat build.bat ``` ### 运行 ```bash # 使用默认配置 ./scanner.exe # 指定配置文件 ./scanner.exe config.ini ./scanner.exe config_local.ini ./scanner.exe config_prod.ini ``` ### 配置文件说明 ```ini # 工作目录 work_dir = D:\nmap_scan # 并发数 max_concurrency = 2 # TCP 端口并发数 tcp_port_concurrency = 500 # 目标 IP 列表 target_ips = 192.168.1.100,192.168.1.101,192.168.1.102 # TCP 扫描参数 tcp_scan_args = -sS -sV -p- -Pn -T4 --open --script="default,auth,vuln" --min-rtt-timeout 100ms --max-rtt-timeout 500ms --max-retries 1 --host-timeout 30m # UDP 扫描参数 udp_scan_args = -sU -sV -p 1-1000 -Pn -T2 --open --max-retries 1 --host-timeout 20m # 超时时间(分钟) tcp_timeout_minutes = 35 udp_timeout_minutes = 25 # 邮件配置 smtp_server = smtp.163.com smtp_port = 465 smtp_user = your_email@163.com smtp_password = your_password send_to = recipient@example.com mail_title = Port Scan Completed mail_body = Full port scan results are attached. ``` ### 输出结果 扫描完成后,在工作目录生成: ``` scan_20260427_150405/ ├── 192.168.1.100/ │ ├── tcp_all.xml │ ├── udp_all.xml │ ├── open_ports.csv │ └── udp_detail.csv ├── 192.168.1.101/ │ └── ... ├── all_open_ports.csv # 全局汇总 ├── result_150405.zip # 压缩包 └── run.log # 运行日志 ``` ## 配置说明 ### config_local.ini 本地测试配置,适合本地网络快速扫描。 ### config_prod.ini 生产环境配置,适合现场扫描。 ### config.ini 默认配置,可自定义修改。 ## 注意事项 1. **TCP SYN 扫描** 需要管理员/root 权限 2. **UDP 扫描** 较慢,请耐心等待 3. 建议预先测试防火墙规则 4. 大规模扫描时适当调整并发数