Lección 4: Campos BLOB y JWBlober

En esta lección aprenderás a extraer los archivos binarios de los campos BLOB con la ayuda de JWBlober para posteriormente editar su contenido.

Si ya eres un usuario avanzado o ha estado tratando de recrear el funcionamiento de un JWPUB lo más probable es que esta entrada sea la primera en llamar tu atención. Como lo señalamos en la lección anterior, además de textos y números, un campo binario o BLOB puede almacenar cualquier archivo (Imagenes, audio, html, PDF, etc.) en formato hexadecimal.

Y en este caso los campos BLOB son el contenido principal de la publicaciones, pero al mismo tiempo son la causa de que muchos hayan desistido de crear sus propios documentos. Pues analizando esta parte de la tabla nos encontramos aparentemente ante algo ilegible o texto sin sentido. No puede editarse ni recrearse como el resto de los campos. ¿Por qué?

¿Qué tenemos aquí?

Hablando de estos campos BLOB que parecen ilegibles, son en realidad archivos html almacenados. Así es, archivos de páginas de internet que un navegador web puede ejecutar. Precisamente JW Library interpreta estos archivos y nos muestra un documento formateado y adecuado para la aplicación. Sin embargo estos html no solo están almacenados en formato binario, sino que además están guardados bajo un elaborado sistema de encriptación. Y he allí el gran problema… para recrear este proceso y conseguir un archivo legible, se requiere ejecutar un método similar que solo se genera en la memoria de la aplicación.

Pero eso ha terminado, pues siendo persistente he conseguido replicar este proceso y me ha permitido preparar para ti una herramienta que nos ayudará con este propósito, a la que he denominado JWBlober

Esta aplicación te servirá para convertir los archivos binarios contenidos en los campos BLOB a un archivo html legible. Una vez que obtengas el documento podrás editarlo a tu gusto y posteriormente volver a generar un archivo BLOB con la misma aplicación.

¿Qué necesitamos?

  • DB Browser for SQlite
  • JWBlober
  • Un archivo jw-jwtoken (*.jwtkn) – Más abajo te explicaré que es esto.
  • Sigil, creador/editor de html y EPUB

Si aún no lo has hecho, ve al Área de Descargas y consigue estas herramientas.

Seguiremos utilizando el ejemplo de las versiones anteriores y suponiendo que ya has descomprimido el archivo th_E.jwpub, cargaremos el archivo th_E.db a DB Browser for SQlite.

Una vez allí vamos a la tabla Document y elegiremos una de las filas del campo content para extraer el archivo binario. Tomemos la entrada número 5 cuyo documento corresponde al que lleva el título de “Effective Introduction” o “STUDY 1”

A continuación (Observa la imagen abajo) haremos lo siguiente: (1) pasamos al campo BLOB de esta fila y (2) nos aseguramos que se encuentra en modo de visualización binario, (3) al costado se nos mostrará el contenido de este campo en hexadecimal y (4) seleccionaremos la opción “Export” para que podamos extraer el archivo y guardarlo en un lugar seguro.

El programa por defecto lo guardará como un archivo de texto. Así que voy a guardarlo como “study1” con extensión “txt”, tu puedes darle el nombre que desees.

Bien ahora que ya tenemos el archivo binario guardado en un lugar seguro procederemos a utilizar la aplicación JWBlober para desencriptarlo.

Si usas por primera vez JWBlober es posible que tu Antivirus lance una alerta y marque el archivo como sospechoso, esto se debe a que se trata de un ejecutable sin firma de un editor de software reconocido.Pero no te preocupes el archivo es completamente seguro. Después de analizarse unos minutos tu antivirus seguramente te dirá que el archivo está limpio.

 

Así que ten paciencia o añade una excepción a fin de que se omita el análisis en este ejecutable.

Ya que tengas abierto el programa verás que es una aplicación muy sencilla:

JWBlober

JWBlober – Por el momento el programa está en Inglés y español.

 

El funcionamiento es muy intuitivo, solo se trata de añadir el archivo binario que guardamos y este se encargará de procesarlo por ti y convertirlo en html legible.

Como verás podemos arrastrar el archivo al área en blanco o hacer clic en el botón de “Add” (Añadir) para encontrarlo en tu PC. En este ejemplo lo haremos de esa manera y buscaremos la ruta del archivo “Study1.txt” que acabamos de guardar.

Una vez agregado el archivo binario elegiremos una carpeta de salida para guardar el documento convertido a html.

Agregada la ruta de salida, estamos casi listos para procesar nuestro archivo. Sin embargo aún falta un campo llamado “jwtoken File” (Archivo de jwtoken) que es vital en este programa. ¿Qué es y por qué es tan importante?

Si recuerdas antes mencionamos que para obtener un archivo legible de los campos BLOB es necesario replicar el proceso interno que JW Library utiliza y que se efectúan en tiempo de ejecución. Pues bueno el programa JWBlober nos ayudará con esto, pero es solo una parte de este procedimiento.

Como complemento de este programa he creado un archivo en un formato especial, y lo he llamado JW token, que lleva la extensión *.jwtkn

Debido a que JW Libray trata a cada publicación con un proceso diferente, los archivos jwtoken se generan también de forma distinta, replicando lo que ocurre internamente en la aplicación.

Si deseas saber más información sobre cómo funciona y cómo conseguir un jwtoken para tus proyectos puedes revisar esta página y sus preguntas frecuentes.

Para seguir el hilo de esta lección descarga el jwtoken que corresponde al folleto TH, versión en inglés. Lo encontrarás en el área de descargas.

Una vez descargado el archivo jwtoken, hacemos clic en el botón “Examine…” (Examinar…) y vamos a buscarlo donde lo hayamos descargado para agregarlo.

Bien parece que ya está todo listo, ahora sí iniciemos el programa dando clic en “Process” (Procesar)

El programa empezará a hacer uso del jwtoken proporcionado y al terminar automáticamente se abrirá la carpeta de salida, mostrandote el archivo htm que se ha convertido.

AVISO: Si al procesar este archivo no aparece cómo en la imagen anterior sino que JWBlober te arroja un error y se cierra. Haz clic en esta página, que puede ser una posible solución.

Si todo ha salido bien vamos a abrirlo con el navegador que tengamos por defecto. (En mi caso Firefox) y listo tenemos aquí un archivo legible. Sin duda es el contenido original desencriptado.

Si te aparecen caracteres extraños en el documento significa que el navegador tiene una codificación del texto incorrecta, para corregir esto ve al menú “Ver” y a la opción “Codificación de texto” y asegurate que esté en Unicode. Así se desplegarán correctamente.

Ahora vamos a revisarlo y compararlo con el documento que aparece en JW Library.

Aquí podemos ver que todos los elementos coinciden, hay algunos párrafos, textos con formato y dos imágenes.

Claramente en el navegador todo es más plano y sencillo, no hay imágenes que puedan desplegarse por lo que aparecen “rotas”, algo completamente normal. Pues como probablemente sabrás una página web lo complementan un archivo de estilos y otros objetos como son las imágenes lo cual no sucede aquí. Mientras que en JW Library todo luce más bonito, se despliega el contenido de una forma más ordenada y con estilos propios ya preinstalados en la aplicación, y claro las imágenes están contenidas en el archivo JWPUB.

Bien ya vimos la parte “bonita” del documento, en que el navegador y por tanto JW Library se encargan de interpretar para el usuario final. Ahora veremos el código fuente del documento antes de ser interpretado y que no se muestra a simple vista pero con el que trabajaremos principalmente.

Así que hacemos clic derecho en cualquier parte de la página y ante el menú que se despliega seleccionamos la opción “ver código fuente de esta página”.

Y aquí tenemos cómo luce el documento antes de ser interpretado:

Si ya tienes experiencia en diseños web o en libros electrónicos EPUB sabrás enseguida de que va esto. Si eres principiante puede parecer complicado pero no lo es tanto. Aun así tal vez prefieras revisar alguna documentación sobre el código html y sus etiquetas antes de continuar. Pues en las lecciones siguientes nos centrarémos solo en algunas de ellas y otros objetos propios del formato JWPUB.

Mientras JW Library nos presenta una publicación lista para ser desplegada con enlaces a la Biblia, referencias e imágenes, nosotros trabajaremos sobre el código html que genera todo eso.

Ya aprenderemos más al respecto en las próximas lecciones.

Ahora vamos a realizar el proceso inverso, es decir convertir nuestro documento html a archivo BLOB de manera que JW Library pueda entenderlo.

JWBlober también nos ayuda a procesar los html de forma inversa, solo necesitamos tener el jwtoken adecuado para el documento. Ya que se trata del mismo documento, cargamos el jwtoken que usamos al principio. Recuerda que cada publicación funciona con un jwtoken distinto.

Seleccionamos una carpeta de salida para guardar el documento y le damos clic en add, para agregar el documento html que estuvimos visualizando.

Ya una vez que los tres campos están completos, iniciamos el proceso.

Cuando el proceso termine nuestra carpeta de salida se abrirá automáticamente y nos mostrará un nuevo archivo: Study1.htm con extensión jw. Un archivo binario listo para guardarse en el campo BLOB de la base de datos de nuestra publicación.

Vamos ahora a DB Browser for Sqlite y si ya tenemos cargada la base de datos de th_E, vamos nuevamente a la tabla ‘Document’  y seleccionamos la fila 5 que tiene almacenada el “Study 1” de la publicación y vamos al campo “Content”.

Una vez allí procedemos ha realizar un proceso similar a cuando exportamos el archivo BLOB y lo guardamos en el equipo, pero ahora será a la inversa buscaremos en el equipo y lo guardaremos en la base de datos, por lo que seleccionamos el botón “Import” , verifica también que en la opción ‘Mode:’ no esté en “text” sino en “binary”

DB Browser buscará por defecto archivos binarios con extensión ‘txt’, pero si lo recuerdas nuestro archivo tiene la extensión ‘jw’ así que cambiamos la opción para que nos deje buscar archivos de cualquier extensión, vamos al filtro de búsqueda como aparece en la imagen y seleccionamos la opción All Files(*).

Listo encontramos nuestro archivo:

Bien ahora le damos abrir y vemos que el contenido hexadecimal del campo blob ha cambiado. Para guardar el nuevo contenido binario le damos clic en Apply (Aplicar).

Y para guardar definitivamente todos los cambios en la base de datos, elegimos la opción “Write Changes”.

Y listo, este es el proceso que haremos cada vez que necesitemos convertir un archivo html a BLOB o viceversa.

IMPORTANTE: Te aclaro que aunque yo si he podido generar el blob de este folleto con su jwtoken, tú no podrás hacerlo pues para evitar modificaciones no autorizadas en nuestra literatura electrónica oficial lo he desactivado y solo te lo muestro como material didáctico.

Pero no te preocupes que en tus proyectos si podrás realizar este procedimiento con archivos tokens de publicaciones que no formen parte del catálogo oficial de JW Library.

Mientras tanto, lo que hemos hecho hasta ahora ha sido sencillo ¿verdad?

Bueno es cierto que no hemos editado ningún contenido todavía… entonces ¿Cómo saber que esto efectivamente funcionó?

En la próxima lección pasaremos de lleno a la edición de documentos.

Siguiente

Anterior

You may also like...

Deja un comentario