
快速且轻量,UDPX 是一个用 Go 编写的单包 UDP 扫描器,支持发现超过 45 种服务,并且能够添加自定义服务。它易于使用且便携,可在 Linux、Mac OS 和 Windows 上运行。与 zgrab2 和 zmap 等互联网范围扫描器不同,UDPX 专为便携性和易用性而设计。
扫描 UDP 端口与扫描 TCP 有很大不同——由于 UDP 是无连接协议,探测 UDP 端口时可能得到响应,也可能得不到。UDPX 采用基于单包的方法。向定义的服务(端口)发送特定协议的包,并等待响应。默认超时限制为 500 毫秒,可通过 -w 标志更改。如果服务在此时间内发回包,则可确定它确实在该端口上监听,并报告为开放。
一种典型的技术是向目标机器上的每个端口发送 0 字节 UDP 包。如果收到“ICMP 端口不可达”消息,则端口关闭。如果收到对探测的 UDP 响应(罕见),则端口开放。如果完全没有响应,则状态为开放或过滤,意味着端口要么开放,要么包过滤器正在阻止通信。由于没有额外价值(UDPX 仅测试特定协议),此方法未实现。

⚠️ 并发数: 默认并发数仅设置为 32 个连接(以免导致崩溃)。如果你有大量主机要扫描,可设置为 128 或 256 个连接。根据你的硬件、连接稳定性和 ulimit(在 *nix 上),你可以运行 512 个或更多并发连接,但不建议这样做。
扫描单个 IP:
udpx -t 1.1.1.1
扫描一个 CIDR,最大 128 个连接,超时 1000 毫秒:
udpx -t 1.2.3.4/24 -c 128 -w 1000
从文件扫描目标,最大 128 个连接,仅扫描特定服务:
udpx -tf targets.txt -c 128 -s ipmi
目标可以是:
支持 IPv6。
如果要存储结果,请使用标志 -o [文件名]。输出格式为 JSONL,如下所示:
{"address":"45.33.32.156","hostname":"scanme.nmap.org","port":123,"service":"ntp","response_data":"JAME6QAAAEoAAA56LU9vp+d2ZPwOYIyDxU8jS3GxUvM="}
__ ______ ____ _ __
/ / / / __ \/ __ \ |/ /
/ / / / / / / /_/ / /
/ /_/ / /_/ / ____/ |
\____/_____/_/ /_/|_|
v1.0.2-beta, by @nullt3r
Usage of ./udpx-linux-amd64:
-c int
最大并发连接数(默认 32)
-nr
不对地址进行随机化
-o string
输出文件,用于写入结果
-s string
仅扫描特定服务,可选值为:ard, bacnet, bacnet_rpm, chargen, citrix, coap, db, db, digi1, digi2, digi3, dns, ipmi, ldap, mdns, memcache, mssql, nat_port_mapping, natpmp, netbios, netis, ntp, ntp_monlist, openvpn, pca_nq, pca_st, pcanywhere, portmap, qotd, rdp, ripv, sentinel, sip, snmp1, snmp2, snmp3, ssdp, tftp, ubiquiti, ubiquiti_discovery_v1, ubiquiti_discovery_v2, upnp, valve, wdbrpc, wsd, wsd_malformed, xdmcp, kerberos, ike
-sp
显示接收到的包(仅前 32 字节)
-t string
要扫描的 IP/CIDR
-tf string
包含要扫描的 IP/CIDR 的文件
-w int
等待响应的最大时间(套接字超时),单位毫秒(默认 500)
你可以在发布版中获取预编译的二进制文件。如果你想从源码构建 UDPX,请遵循以下步骤:
从 git:
git clone https://github.com/nullt3r/udpx
cd udpx
go build ./cmd/udpx
你可以在当前目录中找到二进制文件。
或通过 go:
go install -v github.com/nullt3r/udpx/cmd/udpx@latest
之后,你可以在 $HOME/go/bin/udpx 找到二进制文件。如果需要,将二进制文件移动到 /usr/local/bin/ 以便直接调用。
UDPX 支持超过 45 种服务。最有趣的有:
支持服务的完整列表:
请发送一个包含协议名称和端口的功能请求,我会帮你实现。或者自行添加,文件 pkg/probes/probes.go 包含所有可用的载荷。指定协议名称、端口和数据包(十六进制编码)。
{
Name: "ike",
Payloads: []string{"5b5e64c03e99b51100000000000000000110020000000000000001500000013400000001000000010000012801010008030000240101"},
Port: []int{500, 4500},
},
我对任何损害不承担责任。你对自己的行为负责。未经双方同意扫描或攻击目标可能是非法的。
UDPX 采用 MIT 许可证 发布。