¿Cómo revertir la ofuscación web en un ebook de Amazon Kindle?

Cuando una aplicación falla y se te impide leer un libro comprado, la situación real cambia.. Y este es, el punto de inicio del análisis técnica que se usa como principio de un análisis profundo al sistema de ofuscación de texto implementado en el lector web de Kindle, por parte de Pixelmelt en su blog.

Compras que no son compras, compras que son un alquiler

Todo comenzó con un problema simple: tras adquirir un libro digital, la aplicación falló repetidamente.

El lector web funcionaba, pero no permitía la lectura sin conexión, ni exportación a otras bibliotecas personales.

En la práctica:

  • Se paga por el libro.
  • Solo puede leerse en una aplicación específica.
  • No es posible descargarlo ni respaldarlo.
  • El acceso depende completamente del servicio.

Esto revela una dura y profunda realidad, las mal llamadas “compras” de un libro digital en Amazon, realmente equivalen exclusivamente a un acceso temporal sujeto a las condiciones de la plataforma.

Inicio del análisis profundo al Kindle

El lector web de Kindle resultó ser el punto de partida más accesible. Mediante la observación del tráfico de red, se identificó una petición clave:

https://read.amazon.com/renderer/render

El sistema requería tres niveles de autenticación:

  1. Cookies de sesión.
  2. Token de renderizado obtenido del endpoint startReading.
  3. Un token adicional de seguridad (ADP).

La respuesta a estas peticiones era un archivo .tar con varios JSON:

  • page_data_0_4.json
  • glyphs.json
  • toc.json
  • metadata.json
  • location_map.json.

Aquí comenzaba el proceso de análisis.

La ofuscación del contenido

El contenido textual no estaba en texto plano, sino en secuencias como:

{
  "type": "TextRun",
  "glyphs": [24, 25, 74, 123, 91, 18],
  "style": "paragraph"
}

Cada número representaba un ID de glifo asociado a una figura SVG. Además, el sistema regeneraba el conjunto de glifos cada pocas páginas, lo que impedía construir una tabla de equivalencias global.

Para un libro de 920 páginas se requerían más de un centenar de peticiones, cada una con un alfabeto visual diferente.

Medidas de anti extracción

El lector incluía microinstrucciones SVG que solo los navegadores interpretaban correctamente.

Las librerías de procesamiento externo generaban errores de renderizado, lo que dificultaba automatizar la decodificación.

También se empleaban varias variantes tipográficas (normal, cursiva, negrita, negrita-cursiva), con glifos únicos y ligaduras especiales que aumentaban la complejidad.

Limitaciones del reconocimiento óptico (OCR)

Se probó la decodificación mediante OCR, pero el resultado fue insuficiente, con errores frecuentes en caracteres similares (“l”, “I”, “1”), pérdida de puntuación y fallos en las ligaduras.

El OCR sin contexto no resultó viable para este tipo de estructura.

Solución técnica basada en forma

El descubrimiento clave fue que aunque los identificadores cambiaban, las formas SVG permanecían iguales.

Etapas del proceso final:

  1. Conversión de cada glyphs.json a imágenes 512×512 px.
  2. Generación de un hash perceptual para cada glifo.
  3. Unificación de todos los alfabetos mediante coincidencia de hashes.
  4. Comparación estructural (SSIM) con las fuentes oficiales para identificar cada carácter.

El resultado permitió reconstruir un conjunto de glifos únicos con correspondencia completa y alta precisión.

Reconstrucción del texto

Los archivos JSON incluían información de posición, tamaño y estilo, lo que permitió reconstruir los párrafos con su formato original.

El resultado fue un archivo estructurado y legible, equivalente al texto original, sin los mecanismos de restricción.

Consideraciones finales

El sistema de Kindle muestra hasta qué punto pueden integrarse mecanismos técnicos para limitar el acceso o la copia de un contenido adquirido.

El análisis realizado se centró exclusivamente en comprender su funcionamiento y en el ejercicio del derecho a copia personal dentro de los límites legales pertinentes, tras un PROCESO DE COMPRA convertido ilícitamente en un alquiler por parte de Amazon.

[content-egg module=Amazon template=list]