En mi blog me he dedicado a analizar el funcionamiento de la página de los libros de la CONALITEG para poder descargarlos como PDF.

He logrado “descifrar” los históricos y los no históricos hasta antes del 2026, pero en este nuevo ciclo escolar hay un nuevo método que hace que mi descargador de libros de la CONALITEG tanto el de Windows como el de Android no sirvan para los nuevos libros.

Así que me puse a analizar y aquí voy a compartir lo que encontré al menos mientras escribo este post.

Nuevo método de protección: encriptación real

Todo lo que te voy a contar es especulativo. Solo las personas que desarrollaron el sitio (y Dios) saben qué tecnologías y métodos usaron, lo siguiente son suposiciones mías después de revisar.

  • Ahora realmente se está trabajando con documentos PDF y no con imágenes
  • En lugar de usar turn.js se usa pdf.js
  • El PDF está expuesto públicamente y pdf.js lo puede descargar (usando `getDocument obviamente) pero está encriptado

Sé que invocan a getDocument porque pasan url y password como https://mozilla.github.io/pdf.js/examples/ y como https://stackoverflow.com/questions/14602102/how-to-programatically-open-a-pdf-with-a-user-password

Así que la desencriptación se hace del lado del cliente solo para mostrar el PDF.

La encriptación usada es AES de 128 bits según el diccionario que extraje de un PDF de prueba:


$ grep -a -A 10 "/Encrypt" P1LPM.pdf | head -n 20
/Encrypt 1758 0 R
/ID [<682772ec55a747623d77140f81be2322><952bdd8bd027d70ed4ce62dab1d73b0a>]
/Root 1731 0 R
/Size 1760
>>
startxref
43296203
%%EOF


grep -a -A 20 "1758 0 obj" P1LPM.pdf
1758 0 obj

<<
/O (Jl'm-u@B7&z`N)
/P -3904
/CF
<<
/StdCF
<<
/AuthEvent /DocOpen
/Length 16
/CFM /AESV2
>>
>>
/R 4
/StmF /StdCF
/Filter /Standard
/U (W\rދ��)
/V 4
/StrF /StdCF
/Length 128

Así que, por más que tengas el PDF, sin la contraseña no puede ser accedido. Lo único que resta si no se sabe la contraseña es un ataque de fuerza bruta que se llevaría años.

Posibles métodos para desencriptarlo

Descargar el PDF no es la parte difícil. Está ahí, no expuesto tan público pero lo está.

Sin embargo no importa si lo tienes o no, ya que está encriptado y se necesita la contraseña para poder leerlo (misma que pdf.js sí tiene)

Se me ocurre que podemos hacer lo siguiente:

  • Buscar la contraseña
  • Forzar a pdf.js que nos dé el PDF pegando código en la consola. Dado que pdf.js ya tiene desencriptado el archivo podemos pedirle amablemente que nos lo dé
  • Tomar cada imagen del canvas o elemento que usen para pintar y armar un PDF similar al método para descargar un PDF de solo lectura

Software terminado

Después de analizarlo lo he implementado en mi descargador y funciona perfectamente aunque los PDF estén encriptados. Mira la nueva versión del descargador CONALITEG

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto