General

Hacking DirecTV decos for fun and profit

Amo DirecTV. Hace ya algunos meses publiqué un script que obtiene películas de la guía de programación de DirecTV Latinoamérica (incluyendo PPV) y las correlaciona con los scores en IMDB con el objeto de presentar rápidamente una visión de las próximas películas y su rating, para decidir eficientemente qué ver.

También había comentado en Twitter (y está documentado) que el decodificador de DirecTV tiene capacidad de control remoto vía HTTP (puerto 80) aunque en las últimas actualizaciones del firmware de DirecTV han bloqueado estas funciones (probablemente para permitir solamente el acceso a su aplicación de control por SMS y por la página Web de DirecTVLA)

Pero en realidad el core de mi curiosidad era saber qué hacía el decodificador en Inteet, es decir, ¿para qué sirve la conexión? ¿se comunica con la nave madre? ¿tiene un backdoor para que Washington pueda espiaos?

Básicamente, y como es lógico, hay mucho tráfico SSDP que sale del aparato, probablemente para que conozca consolas, computadores y otros equipos que podrían integrar toda la oferta de medios de una sala de hogar tradicional. Pero también hay algunas resoluciones DNS, como por ejemplo la de stbtvapps.directvla.com.

Y es que, a este host el deco le pide /stbtvappsdock/dock.htm, que devuelve una mezcla de JavaScript un poco rara (incluyendo una redirección a un servidor Web que no existe), y como resultado, cuando usas el botón rojo del control universal de DirecTV, que llama a las aplicaciones en TV, no pasa absolutamente nada luego del diálogo de carga.

Como nota curiosa, este servidor de stbtvapps corre en Amazon, usa Fedora (un Apache 2.2.9) con OpenSSH 4.7 abiertos al público.

Obviamente, es trivial hacerle MITM al deco para que /stbtvappsdock/dock.html devuelva algún HTML. Básicamente, el deco interpreta algo de CSS y un poco de JavaScript (alertas, por ejemplo, aunque de una forma un poco primitiva), y renderiza en pantalla, potencialmente para aplicaciones como la de DirecTV On Demand, quizás los multicámara, y algunas otras.

Puede bajar imágenes de Inteet (probé con medios en Posterous) pero no corre iframes. Aquí un ejemplo, servido por nginx:

Dtv

Voy a dejar Wireshark corriendo durante la noche, a ver que más consulta el deco, y luego haré un breve análisis de la compra de PPV por red, a ver que se puede descubrir ahí. Por supuesto para eso tengo que esperar que Ailé quiera pagar por algo para ver🙂

Update: algunos datos adicionales del browser incorporado:

  • User-Agent: “NDS HTML Engine” (no lo pasa como un header en el request HTTP, hay que pedirlo por JavaScript) — NDS es un proveedor de tecnología de DTV
  • Version (corresponde a mi firmware): F7.1.02_2 Sep 24 2010

Y un par de curiosidades adicionales: el deco pasó toda la noche hablando por UPnP con mi router Linksys, pero nunca reportó la PPV que compré. En la interfaz de DTV me sigue saliendo la película como “no reportada” y no he logrado que lo haga, lo cual me obliga a dejar la captura corriendo hasta que lo haga.

    Standard

    Leave a Reply

    Fill in your details below or click an icon to log in:

    WordPress.com Logo

    You are commenting using your WordPress.com account. Log Out / Change )

    Twitter picture

    You are commenting using your Twitter account. Log Out / Change )

    Facebook photo

    You are commenting using your Facebook account. Log Out / Change )

    Google+ photo

    You are commenting using your Google+ account. Log Out / Change )

    Connecting to %s