局域网 IP 段网络扫描器:发现在线主机 → 扫描开放端口与服务 → 解析设备 MAC 地址。
- 阶段1 ICMP Ping 扫描,找出在线主机
- 阶段2 扫描在线主机的开放端口,并识别服务类型
- 预置端口直接用表内服务名,不重复嗅探
- 非预置端口做分层嗅探(读 banner → HTTP GET → TLS 识别 → banner 特征库)
- 阶段3 解析在线主机的 MAC 地址(基于系统 ARP 表)
- 控制台输出扫描结果
NetScan/
├── cmd/
│ └── netScan/ # 入口:配置、交互输入、流程编排
├── internal/
│ ├── scanner/ # 引擎:Ping、端口扫描、服务嗅探、设备信息
│ └── report/ # 展示:表格、进度
├── go.mod
└── README.md
go build -o NetScan.exe ./cmd/netScan./NetScan.exe或直接运行:go run ./cmd/NetScan
按提示输入:
- 起始 IP / 结束 IP(可指定任意网段)
- 端口:逗号分隔,支持范围,如
22,80,443,8080-8090;留空则使用预置表
示例:
请输入起始IP地址 (默认: 192.168.2.1): 192.168.2.1
请输入结束IP地址 (默认: 192.168.2.254): 192.168.2.254
请输入端口 (逗号分隔, 留空用预置表) (默认: ): 22,80,8080-8090用户留空端口时扫描以下常见端口;命中预置表的端口直接用表内服务名标注,不再主动嗅探。
| 端口 | 服务 | 端口 | 服务 | 端口 | 服务 |
|---|---|---|---|---|---|
| 21 | FTP | 25 | SMTP | 53★ | DNS |
| 22 | SSH | 80 | HTTP | 110 | POP3 |
| 111 | rpcbind | 123★ | NTP | 135 | MSRPC |
| 137★ | NetBIOS-NS | 139 | NetBIOS-SSN | 143 | IMAP |
| 161★ | SNMP | 1900★ | SSDP | 389 | LDAP |
| 443 | HTTPS | 445 | SMB | 465 | SMTPS |
| 587 | SMTP-Sub | 631 | IPP | 636 | LDAPS |
| 873 | rsync | 993 | IMAPS | 995 | POP3S |
| 1080 | SOCKS | 1433 | MSSQL | 1521 | Oracle |
| 1723 | PPTP | 2049 | NFS | 2181 | ZooKeeper |
| 2375 | Docker | 2379 | etcd | 3000 | Grafana |
| 3306 | MySQL | 3389 | RDP | 5432 | PostgreSQL |
| 5672 | RabbitMQ | 5900 | VNC | 5985 | WinRM |
| 5986 | WinRM-S | 6379 | Redis | 6443 | K8s-API |
| 7001 | WebLogic | 8080 | HTTP | 8081 | HTTP |
| 8086 | InfluxDB | 8443 | HTTPS | 8888 | HTTP |
| 9000 | HTTP | 9090 | Prometheus | 9092 | Kafka |
| 9200 | Elasticsearch | 11211 | Memcached | 1883 | MQTT |
| 27017 | MongoDB |
★ 为 UDP 端口,用专用探测包(DNS 查询 / NTP 版本 / NetBIOS 状态 / SNMP GET / SSDP M-SEARCH),收到回包判为开放。
- 在线主机列表
- 开放端口汇总(IP / 端口 / 协议 / 服务)—— 首要关注
- 设备信息(IP / MAC)—— 次要
- 扫描统计与耗时
- 仅适用于 Windows(Ping /
arp -a命令语法);纯 Go 实现,无第三方依赖 - 网络探测请仅在自有网络或已获授权的环境下进行