Ver Mensaje Individual
  #2  
Antiguo 07-04-2017
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Reputación: 16
espinete Va camino a la fama
He hecho algunos avances interesantes, que iré poniendo por aquí para conocimiento de todos...

Introducción:

Los routers (y otros dispositivos de red, como altavoces inalámbricos, discos multimedia, cámaras, etc.) tienen una característica llamada UPnP (Universal Plug and Play). La mayoría de los routers modernos la tienen (desde 2002). Bien.

Cuando un dispositivo UPnP se conecta a una red, su función es ver qué más hay conectado, y para ello, envía un "mensaje de descubrimiento" (en inglés suena mejor) a la IP 239.255.255.250 y puerto UDP 1900. Todos los dispositivos UPnP están programados para responder a este mensaje, con una respuesta que contiene información del dispositivo (nombre, servicios que admite, su IP, etc. en un XML). Bien.

Conociendo la IP y los servicios que admite cada dispositivo, es posible comunicarse con él, enviándole "comandos" y esperando su respuesta, siempre y cuando los comandos sean válidos y el dispositivo los admita. Esto se hace enviando mensajes concretos en formato XML por SOAP. Bien también.

Encontré un código algo antiguo, de un tipo ruso, que hacía el Discover de dispositivos en la red y permitía enviar el comando de Abrir y Cerrar Puertos. He de decir que funciona perfectamente (después de algunos retoques), aunque como explicaré ahora, no del todo:

El código funciona, y el router me devuelve "OK 200". Utilizando la utilidad "miniupnpc", que se puede descargara aquí, puedo ver que efectivamente el puerto aparece como abierto. Bien.

El problema es que, en el router NO me aparece ese puerto como abierto.

Seguiré investigando.

Aquí hay información sobre lo que acabo de poner: http://www.upnp-hacks.org/upnp.html

El código fuente lo pongo en otra respuesta para que quede más claro.
Responder Con Cita