Estou tentando encontrar uma maneira de fazer com que meu roteador relate meu IP de WAN usando UPnP / SSDP, mas até agora não consegui nem obter uma lista de UPnP compatíveis com dispositivos de acesso à Internet na minha rede. Aqui está o pedido que estou enviando:
$ 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
Com o comando:
$ nc -uvv 239.255.255.250 1900 < request.txt
Connection to 239.255.255.250 1900 port [udp/ssdp] succeeded!
Acabei de receber a mensagem de conexão bem-sucedida e nada ...
Alguém poderia me dar alguma dica (sem endereços de memória, por favor!) Sobre o que estou fazendo de errado?
Atualização: Ok, então tentei usar tcpdump
para obter respostas, eis o que tenho:
$ 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
…
Acho que o próximo passo é analisar a saída do tcpdump e filtrar todas as respostas que não contêm o NT: urn:schemas-upnp-org:device:InternetGatewayDevice:1
cabeçalho e, em seguida, fazer a solicitação SOAP real ao roteador.