Resource icon

SSDP_discover.pl

Programmiersprache(n)
Perl
Sobald ein UPnP-Gerät über eine IP-Adresse verfügt, muss es seine Existenz im Netzwerk an die Kontrollpunkte melden. Dies erfolgt via UDP über die Multicast-Adresse 239.255.255.250:1900 auf der Basis des SSDP-Protokolls. Ebenso können Kontrollpunkte nach UPnP-Geräten im Netzwerk suchen.

Dieses Skript findet UPnP-Geräte im Netz.

Perl:
#!/usr/bin/perl
use Socket;

$IP             = "239.255.255.250";
$PORT           = 1900;
$TIMEOUT        = 3;

$request_header = <<"__REQUEST_HEADER__";
M-SEARCH * HTTP/1.1
Host:$IP:$PORT
Man:"ssdp:discover"
ST:upnp:rootdevice
MX:3

__REQUEST_HEADER__

# ST: ssdp:all
# ST: upnp:rootdevice
# ST: urn:schemas-upnp-org:device:MediaServer:1
# ST: urn:schemas-upnp-org:device:MediaRenderer:1
# ST: urn:schemas-upnp-org:device:avm-aha:1



$request_header =~ s/\r//g;
$request_header =~ s/\n/\r\n/g;

$proto = getprotobyname('udp');
socket(S, AF_INET, SOCK_DGRAM, $proto) || die "socket(S): $!\n";
setsockopt(S, SOL_SOCKET, SO_BROADCAST, 1) || die "setsockopt(S): $!\n";
$that = sockaddr_in($PORT, inet_aton($IP));

print $request_header;
send(S, $request_header, 0, $that) || die "send(S): $!\n";

$rin = '';
vec($rin, fileno(S), 1) = 1;
while( select($rout = $rin, undef, undef, $TIMEOUT) ) {
    recv(S, $response_header, 4096, 0) || die "recv(S): $!\n";
    print "Test: $response_header";
}

close(S);
exit 0;

Ausgabe:
Code:
root@alien:/usr/src/ssdp# ./SSDP_discover.pl    
M-SEARCH * HTTP/1.1
Host:239.255.255.250:1900
Man:"ssdp:discover"
ST:upnp:rootdevice
MX:3

Test: HTTP/1.1 200 OK
LOCATION: http://192.168.1.24:49000/fboxdesc.xml
SERVER: FritzTV UPnP/1.0 AVM FRITZ!WLAN Repeater DVB-C 133.06.51
CACHE-CONTROL: max-age=1800
EXT:
ST: upnp:rootdevice
USN: uuid:123402409-bccb-40e7-8e6c-3810D51E2BD6::upnp:rootdevice

Test: HTTP/1.1 200 OK
LOCATION: http://192.168.1.24:49000/satipdesc.xml
SERVER: FritzTV UPnP/1.0 AVM FRITZ!WLAN Repeater DVB-C 133.06.51
CACHE-CONTROL: max-age=1800
EXT:
ST: upnp:rootdevice
USN: uuid:663d5d6c-f9f8-4bb4-84d4-3810D51E2BD6::upnp:rootdevice

Test: HTTP/1.1 200 OK
LOCATION: http://192.168.1.1:49000/MediaServerDevDesc.xml
SERVER: Fritz UPnP/1.0 AVM FRITZ!Box 7490 113.06.80
CACHE-CONTROL: max-age=1800
EXT:
ST: upnp:rootdevice
USN: uuid:fa095ecc-e13e-40e7-8e6c-c80e146f4b55::upnp:rootdevice

...
Autor
lano
First release
Last update
Bewertung
0,00 Stern(e) 0 Bewertungen

More resources from lano

Oben