echowz/mdns-scanner

GitHub: echowz/mdns-scanner

基于 mDNS 协议的网络资产发现 CLI 工具,支持深度 Banner 识别与并发扫描,解决局域内服务可见性问题。

Stars: 0 | Forks: 0

# mDNS 网络资产测绘 基于 mDNS 协议的网络资产测绘 CLI 工具。扫描指定 IP 网段和端口范围,发现并输出 mDNS 服务资产信息,支持深度 banner 识别。 ## 功能特性 - 🔍 **DNS-SD 服务发现** - 自动发现目标网段内的所有 mDNS 服务类型 - 📋 **深度 Banner 识别** - 解析 TXT 记录获取设备型号、固件版本、访问方式等详细信息 - 🌐 **完整资产信息** - 输出 IP、Port、Hostname、IPv4/IPv6、TTL、服务名等 - ⚡ **并发扫描** - 支持多 worker 并发,高效扫描大网段 - 📊 **多格式输出** - 支持 Text、JSON、YAML 格式,可导出到文件 ## 安装 ``` go build -o mdns-scanner . ``` ## 使用方法 ### 基本用法 ``` # 扫描整个 /24 网段的全部端口 ./mdns-scanner -c 192.168.1.0/24 -p 1-65535 # 扫描指定端口范围 ./mdns-scanner -c 192.168.1.0/24 --port-min 1 --port-max 10000 # 详细模式 + JSON 输出到文件 ./mdns-scanner -c 10.0.0.0/24 -p 1-65535 -v -f json -o results.json # 调整超时和并发数 ./mdns-scanner -c 192.168.1.0/24 -p 1-65535 -t 5 -w 100 ``` ### 参数说明 | 参数 | 缩写 | 默认值 | 说明 | |------|------|--------|------| | `--cidr` | `-c` | (必填) | 目标 CIDR 网段 | | `--ports` | `-p` | - | 端口范围简写 (如 `1-65535`) | | `--port-min` | - | `0` | 最小端口号 | | `--port-max` | - | `65535` | 最大端口号 | | `--timeout` | `-t` | `3` | 每主机超时(秒) | | `--workers` | `-w` | `50` | 并发 worker 数 | | `--output` | `-o` | - | 输出文件路径 | | `--format` | `-f` | `text` | 输出格式: text/json/yaml | | `--verbose` | `-v` | `false` | 详细日志模式 | ## 输出示例 ``` Host: 192.168.1.100 (slw-nas.local) ------------------------------------------------------------ services: 9/tcp workstation: Name=slw-nas [24:5e:be:69:a3:13] IPv4=192.168.1.100 IPv6=fe80::265e:beff:fe69:a313 Hostname=slw-nas.local TTL=10 5000/tcp http: Name=slw-nas IPv4=192.168.1.100 Hostname=slw-nas.local TTL=10 path=/ 445/tcp smb: Name=slw-nas IPv4=192.168.1.100 Hostname=slw-nas.local TTL=10 5000/tcp qdiscover: Name=slw-nas IPv4=192.168.1.100 Hostname=slw-nas.local TTL=10 accessType=https,accessPort=86,model=TS-X64,displayModel=TS-464C,fwVer=5.2.9,fwBuildNum=20260214 answers: PTR: _workstation._tcp.local _http._tcp.local _smb._tcp.local _qdiscover._tcp.local _device-info._tcp.local _afpovertcp._tcp.local ``` ## 技术原理 1. **DNS-SD 浏览** - 向目标 IP 发送 `_services._dns-sd._udp.local.` PTR 查询,发现所有注册的服务类型 2. **服务实例枚举** - 对每个服务类型发送 PTR 查询,获取具体服务实例 3. **实例解析** - 对每个实例发送 SRV/TXT/A/AAAA 查询,获取完整信息 4. **深度 Banner** - 解析 TXT 记录中的键值对,提取设备型号、固件版本等深度信息 ## 依赖 - [miekg/dns](https://github.com/miekg/dns) - DNS 协议库 - [spf13/cobra](https://github.com/spf13/cobra) - CLI 框架
标签:API安全, Banner识别, DNS-SD, EVTX分析, Go语言, IPv4, IPv6, JSON输出, Linux安全, mDNS, PowerShell, TTL, TXT记录解析, YAML输出, 固件版本, 多格式输出, 局域网扫描, 并发扫描, 广播协议, 数据泄露防护, 数据统计, 文本输出, 日志审计, 服务发现, 程序破解, 端口扫描, 网段扫描, 网络探测, 网络资产测绘, 计算机应急响应小组, 设备识别, 资产清单