linux发现SSDP服务的命令
sudo apt-get install gupnp-tools
gssdp-discover -i wlan0 --timeout=3
windowns发现SSDP服务的命令
使用python命令来发送udp的组播包,参考
https://blog.cloudflare.com/ssdp-100gbps/
参考代码:
#!/usr/bin/env python2
import socket
import sys
import time
dst = "239.255.255.250"
if len(sys.argv) > 1:
dst = sys.argv[1]
st = "upnp:rootdevice"
if len(sys.argv) > 2:
st = sys.argv[2]
msg = [
'M-SEARCH * HTTP/1.1',
'Host:239.255.255.250:1900',
'ST:%s' % (st,),
'Man:"ssdp:discover"',
'MX:1',
'']
##msg = [
## 'CACHE-CONTROL: max-age=66',
## 'LOCATION: http://192.168.2.7:49152/description.xml',
## 'OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01',
## '01-NLS: 1c23906c-1dd2-1I wi1b2-bafb-bcb5c20b5861',
## 'NT: urn:schemas-upnp-org:service:ConnectionManager:1',
## 'NTS: ssdp:alive',
## 'SERVER: Linux/4.9.113 HTTP/1.0',
## 'X-User-Agent: redsonic',
## 'USN: uuid:29bca68c-dad4-1a0e-3773-ca2c132a272b::urn:schemas-upnp-org:service:ConnectionManager:1',
## '']
##
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
s.settimeout(10)
for i in range(1,10000):
s.sendto(('\r\n'.join(msg)).encode(), (dst, 1900) )
time.sleep(0.01)
data, addr = s.recvfrom(32*1024)
python脚本使用方法:
python IDLE:
1 file-open 上面的py文件
2 F5运行文件
设备端会收到相应的SSDP组播包
I wifihelp 714960/0x1420cc08 tcpip_filter_packet:826] ignore packet 192.168.1.183 => 239.255.255.250@1900
[715459][IP: v:0x4 hlen:20 tos:0xI0 tlen:123 id:0xe122 offset:0 ttl:1 protocl:17/UDP cksum:0x37e4]
[715499][ETH-S][IP-17]192.168.1.183:57307->239.255.255.250:1900, len:137, msg:M-SEARCH * HTTP/1.1
Host:239.255.255.250:1900
ST:upnp:rootdevice
Man:"ssdp:discover"
MX:1
参考
https://zhuanlan.zhihu.com/p/40407669