Descargar vídeos de Telecinco mitele.es de forma manual

Hace algunos días descompilé el reproductor flash de Telecinco para ver cómo lograban extraer el enlace a los vídeos. No tengo ninguna gana de implementarlo, así que pondré aquí el método y esperaré pacientemente a ver si alguien se anima :)

Imaginad que queremos descargar un vídeo de www.mitele.com, por ejemplo: http://www.mitele.es/series-online/tierra-de-lobos/temporada-2/capitulo-21/

En el código fuente de la página, nos encontraremos con un javascript que incluye la url al xml con la información del vídeo con la siguiente pinta:

(function($) {
	var flashvars = {"host":"http:\/\/media3.mitele.es\/playerxml\/74\/0a02d0786a4239a6.xml","ov_mast":"http:\/\/www.mitele.es\/media\/playerxml\/MASTTemplate.php","ov_mast_videolength":"01:12:59","ov_mast_videocontext":"\/videos\/series\/tierra_de_lobos"};
	var params = {"quality":"high","bgcolor":"#05BBED","play":"true","loop":"true","wmode":"transparent","scale":"noscale","menu":"true","devicefont":"false","salign":"","allowfullscreen":"true","allowscriptaccess":"sameDomain"};
	var dates = {"start":1321484100,"end":null};
	$(document).bind('videoEmbed',function() {
		if (dates.start || dates.end) {
			$.ajax({
				url:'/media/clock.php',
				notoken:true,
				success: function(mydate) {
					if ((!dates.start || dates.start <= mydate) && (!dates.end || dates.end >= mydate)) {
						//Okey dokey
						launchPlayer();
					}
				}
			});
		}
		else launchPlayer();
	});
	function launchPlayer() {
		new videoEmbed({id:"t5player_1",width:660,height:371},"http://www.mitele.es/media/swf/TL5VODPlayer.swf",flashvars,params,3673);	}
		$(function() { $(document).trigger('videoEmbed'); });
	})(jQuery);

Flashvars contiene el atributo “host” que en este caso es: http://media3.mitele.es/playerxml/74/0a02d0786a4239a6.xml

El XML contiene una línea que nos resulta interesante:

<link start="0" end="0">/nogeo/seriesonline/tierradelobos/t2/c21.mp4</link>

Debemos quedarnos con los valores de start y end y el contenido de la etiqueta (/nogeo/seriesonline/tierradelobos/t2/c21.mp4), de ahora en adelante “id”.

Aun debemos obtener un dato más, el que hace que los enlaces sean válidos durante un período de tiempo limitado. Debemos acceder a http://servicios.telecinco.es/tokenizer/clock.php y apuntar el resultado, clock de ahora en adelante. Clock nos responderá con un valor, por ejemplo: 1321538494.

Ahora viene lo interesante. Telecinco realiza una petición a http://servicios.telecinco.es/tokenizer/tk2.php para obtener el enlace de descarga. La petición es POST y tiene la siguiente pinta:

force_http1&sec=<petición_cifrada>&id=/nogeo/seriesonline/tierradelobos/t2/c21.mp4

El reproductor de Telecinco realiza la siguiente operación para obtener el argumento “sec”:

sec = AES.encrypt(serverTime + ";" + id + ";" + startTime + ";" + endTime, "xo85kT+QHz3fRMcHNXp9cA", 256);

En otras palabras, realiza un cifrado AES de 256 bits sobre el texto “clock;id;start;end” usando como clave “xo85kT+QHz3fRMcHNXp9cA”. En nuestro ejemplo la cadena sería: “1321538494;/nogeo/seriesonline/tierradelobos/t2/c21.mp4;0;0”.

Una vez obtenido “sec” ya podemos hacer la petición a tk2.php y obtener el enlace de descarga.

Si vais a implementarlo, tened en cuenta que es AES de 256 en modo counter. Además, el algoritmo de Telecinco usa Base64. El código que usa, en ActionScript lo podéis encontrar en http://code.google.com/p/lostinactionscript/source/browse/trunk/library/com/lia/crypto/AES.as?r=40 y también en JavaScript en http://www.movable-type.co.uk/scripts/aes.html

Si os animáis a implementarlo, avisad ;)

About the Author

Me llamo Pablo Carballude González, soy graduado en computación y con master en HCI y Seguridad Informática. Actualmente trabajo para Microsoft como Developer Evangelist. Soy de esas personas que no saben si los textos autobiográficos deben ser en primera o tercera persona. Lo intenté en segunda, pero no le entendí nada :P