SGCG

…esto no es un subtítulo…

Ir a: contenido categorías calendario archivo suscripción

Volver arriba

Nuevos cambios en el mecanismo para descargar contenido multimedia de rtve.es (2)

2012-09-11

El artículo de ayer describía el mecanismo de obtención de audio y vídeo de la página de RTVE, pero dejaba para hoy la descripción del mecanismo empleado para decodificar la dirección del contenido. Vimos que esta dirección se encuentra encapsulada entre los metadatos de una imagen en la forma de un campo de texto con la siguiente estructura:
[TEXTO OFUSCADO]: [CLAVE NUMÉRICA]


El separador es la secuencia de caracteres #: (almohadilla, dos puntos, espacio). Si usamos la herramienta estándar de *nix strings con sus parámetros por defecto sobre la imagen, el separador queda acortado debido a que parte de él no es reconocida como texto. Si usamos esta herramienta sin pasarle opciones adicionales, nos interesan las tres primeras líneas de la salida:
IHDR
tEXt[TEXTO OFUSCADO]#
[CLAVE NUMÉRICA]
Vemos que del separador sólo sobrevive la almohadilla, [TEXTO OFUSCADO] viene precedido por la secuencia tEXt. La tercera línea contiene caracteres no numéricos después de la secuencia de dígitos que es [CLAVE NUMÉRICA]. Con los valores de [TEXTO OFUSCADO] y [CLAVE NUMÉRICA] en la mano, podemos proceder a la decodificación. Hay varias formas de plantearla; quizá una de las más fáciles es en dos pasos.

Primer paso: obtención del texto parcialmente desofuscado

Tenemos que construir un nuevo texto, [TEXTO INTERMEDIO] , a base de seleccionar caracteres de [TEXTO OFUSCADO]. De esta manera, el siguiente paso queda más sencillo que sin esta etapa de postproceso. La selección se hace a intervalos crecientes con un periodo igual a 4. Numerados los caracteres de [TEXTO OFUSCADO] de 1 en adelante, los caracteres que forman [TEXTO INTERMEDIO] siguen esta secuencia:
1, 3, 6, 10, 11, 13, 16, 20, 21, 23, 26, 30, …
Es decir, se parte del primer carácter (un salto de 1 carácter desde 0), luego hay un salto de 2 caracteres, luego hay un salto de 3 caracteres, luego hay un salto de 4 caracteres y se vuelve a empezar cíclicamente con el salto de 1 carácter. El algoritmo queda así:

  1. origen ← 0
  2. destino ← 1
  3. incremento ← 1
  4. mientras origen < longitud de [TEXTO OFUSCADO]
    1. origenorigen + incremento
    2. [TEXTO INTERMEDIO]destino[TEXTO OFUSCADO]origen
    3. incrementoincremento + 1
    4. si incremento = 5, entonces incremento ← 1
    5. destinodestino + 1

Los subíndices de [TEXTO OFUSCADO] y [TEXTO INTERMEDIO] indican caracteres individuales por sus posiciones numéricas empezando por 1. Así, si tuviéramos «probando» como valor de [TEXTO OFUSCADO] y el valor de origen fuera igual a 4, [TEXTO OFUSCADO]origen sería igual a «b».

Segundo paso: obtención de la dirección

Ahora que tenemos [TEXTO INTERMEDIO], podemos decdificar la dirección con la información contenida en [CLAVE NUMÉRICA]. No usaremos todos los dígitos de la clave, sino que los seleccionaremos con una secuencia algo similar a la del paso anterior. Construiremos la dirección del contenido, [DIRECCIÓN]. La idea es ésta:

  1. dígito ← 0
  2. incremento ← 4
  3. destino ← 1
  4. mientras dígito < longitud de [CLAVE NUMÉRICA]
    1. dígitodígito + 1
    2. origen ← 10 ⋅ [CLAVE NUMÉRICA]dígito
    3. dígitodígito + incremento
    4. origenorigen + [CLAVE NUMÉRICA]dígito
    5. origenorigen + 1
    6. [DIRECCIÓN]destino = [TEXTO INTERMEDIO]origen
    7. incrementoincremento + 1
    8. si incremento = 5, entonces incremento ← 1
    9. destinodestino + 1

Los subíndices de [CLAVE NUMÉRICA], [TEXTO INTERMEDIO] y [DIRECCIÓN] funcionan como los de [TEXTO OFUSCADO] y [TEXTO INTERMEDIO] en el primer algoritmo.

El programa rtve-mediateca-dl

He actualizado rtve-mediateca-dl, el pequeño programita para sistemas *nix que implementa el método descrito en estos dos últimos artículos.


Categorías: Informática

Permalink: http://sgcg.es/articulos/2012/09/11/nuevos-cambios-en-el-mecanismo-para-descargar-contenido-multimedia-de-rtve-es-2/