Skip to content

yunasora/WebTest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

mdnsmap

mdnsmap 是一个 Golang 编写的网站/服务测绘 CLI,面向 mDNS / DNS-SD 资产发现。

它可以输入 IPv4 网段和端口范围,主动探测 mDNS 响应,解析 PTR/SRV/TXT/A/AAAA 记录,并输出资产的深度 banner:

  • ip
  • port
  • host
  • services
  • Name
  • IPv4 / IPv6
  • Hostname
  • TTL
  • TXT 深度字段,例如 path=/model=...fwVer=...fwBuildNum=...
  • answers.PTR 服务清单

说明:mDNS 标准端口是 UDP/5353。本工具的 -ports 表示“输出/过滤服务的业务端口范围”,例如 mDNS banner 中 SRV 记录声明的 9/tcp445/tcp548/tcp5000/tcp

构建

go build -o mdnsmap ./cmd/mdnsmap

使用

./mdnsmap -cidr 192.168.1.0/24 -ports 9,445,548,5000
./mdnsmap -cidr 192.168.1.10 -ports all
./mdnsmap -cidr 192.168.1.0/24 -ports 5000 -service _qdiscover._tcp.local
./mdnsmap -cidr 192.168.1.0/24 -ports 1-10000 -json

常用参数:

-cidr           IPv4 网段或单 IP,例如 192.168.1.0/24
-ports          端口列表/范围:9,445,548,5000、1-10000、all
-timeout        每轮等待响应时间,例如 3s、1500ms
-retries        重试次数
-concurrency    单播主动探测并发数
-service        额外查询的 DNS-SD 服务类型,可重复
-json           JSON 输出
-all-mdns       输出没有匹配端口的 PTR-only 服务
-active         是否对 CIDR 中每个 IP 做单播 mDNS 探测,默认 true
-qu             设置 QU bit 请求单播响应,默认 true

输出示例

ip: 192.168.1.10
host: slw-nas.local
port: 9
services:
9/tcp workstation:
Name=slw-nas [24:5e:be:69:a3:13]
IPv4=192.168.1.10
IPv6=fe80::265e:beff:fe69:a313
Hostname=slw-nas.local
TTL=10
5000/tcp http:
Name=slw-nas
IPv4=192.168.1.10
IPv6=fe80::265e:beff:fe69:a313
Hostname=slw-nas.local
TTL=10
path=/
445/tcp smb:
Name=slw-nas
IPv4=192.168.1.10
IPv6=fe80::265e:beff:fe69:a313
Hostname=slw-nas.local
TTL=10
5000/tcp qdiscover:
Name=slw-nas
IPv4=192.168.1.10
IPv6=fe80::265e:beff:fe69:a313
Hostname=slw-nas.local
TTL=10
accessType=https,accessPort=86,model=TS-X64,displayModel=TS-464C,fwVer=5.2.9,fwBuildNum=20260214
device-info:
Name=slw-nas(AFP)
IPv4=192.168.1.10
TTL=10
model=Xserve
548/tcp afpovertcp:
Name=slw-nas(AFP)
IPv4=192.168.1.10
IPv6=fe80::265e:beff:fe69:a313
Hostname=slw-nas.local
TTL=10
answers:
PTR:
_afpovertcp._tcp.local
_device-info._tcp.local
_http._tcp.local
_qdiscover._tcp.local
_smb._tcp.local
_workstation._tcp.local

识别逻辑

  1. 发送 _services._dns-sd._udp.local PTR 查询获取设备公布的服务类型。
  2. 查询常见服务类型:_workstation_http_smb_qdiscover_device-info_afpovertcp 等。
  3. 解析:
    • PTR:服务类型和服务实例名
    • SRV:端口、协议、hostname
    • TXT:深度 banner 字段
    • A/AAAA:IPv4/IPv6 地址
  4. 按用户输入端口范围过滤 SRV 端口,聚合为资产输出。

验证

项目内置了一个深度 banner 聚合单元测试,覆盖题目示例中的字段深度:

go test ./...

About

nil

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages