Je cherche un moyen d'obtenir mon adresse IP WAN de mon routeur en utilisant UPnP/SSDP, mais jusqu'à présent, je n'ai même pas pu obtenir une liste des appareils d'accès à Internet prenant en charge UPnP sur mon réseau. Voici la requête que j'envoie :
$ cat request.txt
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 3
ST: urn:schemas-upnp-org:device:InternetGatewayDevice:1
Avec la commande :
$ nc -uvv 239.255.255.250 1900 < request.txt
La connexion à 239.255.255.250 sur le port 1900 [udp/ssdp] a réussi !
Je reçois simplement le message de connexion réussie et puis rien...
Est-ce que quelqu'un pourrait me donner des conseils (pas d'adresses mémoire s'il vous plaît!) sur ce que je fais de travers ?
Mise à jour: D'accord, j'ai essayé d'utiliser tcpdump
pour obtenir des réponses, voici ce que j'ai obtenu :
$ sudo tcpdump -vv -A -s 0 -i en1 udp port 1900 and host 239.255.255.250
…
NOTIFY * HTTP/1.1
Host: 239.255.255.250:1900
Cache-Control: max-age=60
Location: http://192.168.1.1:1780/InternetGatewayDevice.xml
NTS: ssdp:alive
Server: POSIX, UPnP/1.0 linux/5.100.104.2
NT: urn:schemas-upnp-org:device:InternetGatewayDevice:1
…
Je suppose que la prochaine étape consiste à analyser la sortie de tcpdump et à filtrer toutes les réponses qui ne contiennent pas l'en-tête NT: urn:schemas-upnp-org:device:InternetGatewayDevice:1
pour ensuite envoyer la requête SOAP réelle au routeur.