Hacking: Obtener la URL de un archivo flv de MegaVideo por programación

COMO PARECE QUE EL FBI SE ABURRE Y SE HAN CARGADO MEGAVIDEO, TODA ESTA INFO YA NO SIRVE PARA NADA


Como todos ya sabéis MegaVideo se gana el pan de cada día a base de publicidad y suscripciones para que pagues y así no recibas mensajitos del estilo ” Has visto 72 minutos, por lo que te voy a joder un ratito y te vas a quedar sin ver tu peli favorita durante 50 minutos”.

Esta protección se realiza a varios niveles, me explico:

– A través de tu IP comprueba que la cantidad de datos descargados corresponde en tiempo a x minutos y si superas ese tiempo el reproductor de flash te muestra ese maravilloso cuadro. Esta protección se puede saltar borrando tus cookies y cambiando tu ip. Se puede cambiar la ip de múltiples formas tales como reiniciar el router si posees IP dinámica o conectándote a un servidor proxy para enmascarar tu IP. Nota: Más adelante añadiré un post en el que explico como configurar un servidor proxy squid si posees un VPS o alguna máquina con OS Linux donde le puedas meter mano.

– A través del enmascarado de la URL del archivo flv, o lo que es lo mismo, del propio archivo *.flv que te sirve megavideo. Esto se hace mediante un algoritmo que a través de tres variables es capaz de descifrar el reproductor flash y mostrarte así el video.

Pues bien, uno de los síntomas de la curiosidad hizo que intentara descubrir que tipo de algoritmo es el utilizado por el reproductor de flash y como conseguir la URL del video para poder reproducirla directamente en mi propio reproductor (por ejemplo MPlayer). Os explico paso por paso lo que hice y os añado el código fuente y binarios de un programita que hice para automatizar todos los pasos.

Paso uno. Que narices hace el reproductor de flash para conseguir la URL del archivo flv.

Cuando quieres ver un video en MegaVideo, la página que sirve éste tiene una URL del tipo:  http://www.megavideo.com/?v=F9UGA7EI donde a través del parámetro v=XXXXXXX la página cambia para mostrarte un video u otro en el reproductor flash que se incrusta en tu navegador.

Si hechas un vistazo al código fuente servido de seguida te das cuenta que no aparece la URL del video a ver, si no que al reproductor de flash se le pasan otro tipo de parámetros sin ningún sentido a priori.

Entonces si al reproductor no se le pasa la URL del archivo flv como narices lo sabe???. Sencillo!, es el reproductor quien calcula esta dirección URL a través de esos parámetros ininteligibles.

Vayamos entonces a ver que algoritmo es el que calcula dicha dirección…. pero espera!! que no puedes ver el código fuente del reproductor de flash!! Opss!!!

Paso dos. Descompilar el reproductor de flash para ver que hace.

Afortunadamente existen herramientas de terceros para decompilar un archivo compilado de flash. De todos es conocido la falta de protección del código fuente de flash, sobretodo si no se utilizan técnicas para enmascararlo un poco.

Una de las herramientas que encontré para descompilar el flash fue Flash Decompiler Trillix en su versión 3, que es una versión comercial (de esas de sacar tu VISA para conseguir una licencia) pero afortunadamente todo el mundo sabe como conseguir un serial by the face no? (no lo explico aquí que ya sois mayorcitos!).

Este programa es tan sencillo que basta con descargar el reproductor flash de la página de megavideo (archivo:  mv_player.swf que está en URL: http://wwwstatic.megavideo.com/mv_player.swf. Lo podéis ver fácilmente en el código fuente), abrirlo con la aplicación de Trillix y ya tenéis disponibles todos sus frames, text, images, sprites…. y lo más importante! su código actionscript donde encontrar la función que a través de tres variables forma la URL completa del archivo .flv

trillix

Paso tres. Donde está la famosa función?

Si indagamos un poco, observamos que en la carpeta Scripts, se encuentran varios ficheros y es el primero (Frame 0) donde debemos buscar.

La función se llama decrypt y toma como parámetros str, key1 y key2 que corresponden respectivamente a las variables: flashvars.un, flashvars.k1 y flashvars.k2 que encontramos en el código fuente de la página. Con estas tres variables se forma una cadena que se concatena al final de otra cadena del estilo: http://www[xxx].megavideo.com/files/, donde [xxx] es el valor de la variable  flashvars.s que también se encuentra en el código fuente de la página.

Un ejemplo es más claro:

Supongamos que hacemos una petición a la página: http://www.megavideo.com/?v=6FL2UG4V, ésta a través de su código fuente y para ese momento determinado (las variables cambian con cada petición) nos devuelve la variable  flashvars.s = “603“, por lo que con esto ya tenemos una parte de la cadena: http://www603.megavideo.com/files/.

Ahora tan solo nos queda averiguar la otra parte de la cadena y esta se forma a través de la función decrypt que si le pasamos los valores que se encuentran en el código fuente de la página (flashvars.un = “d4e9bb2c757a7716eaa0c1fb7fb87784“,  flashvars.k1 = “31317“,  flashvars.k2 = “19798“) nos devuelve  d33bc94eaaa34a1795da23de2535ee23.

Finalmente solo nos queda añadir esta cadena al texto anterior y tenemos la URL completa al archivo flv.  http://www603.megavideo.com/files/d33bc94eaaa34a1795da23de2535ee2

Esta URL se la podemos pasar por ejemplo al MPlayer y ver directamente el vídeo en nuestro reproductor de escritorio que tenga los codecs necesarios para reproducir este tipo de ficheros. Para muestra un botón:

Traducción a C# de la función decrypt y creación de una pequeña aplicación que muestra lo explicado en este post


programita

El código fuente de la aplicación lo podéis encontrar aquí y si lo que deseáis son lo binarios para probarla directamente sin compilar código fuente lo encontrareis aquí.

code

Nos vemos en el próximo post!!!

Si te ha gustado y quieres compartir esta página..