sábado, 8 de noviembre de 2008

Hack 5: Partiendo PDF's

Estos días me surgió la necesidad de manipular un fichero PDF de un libro escaneado a doble página para conseguir un PDF con cada página separada.Indicar que lo he hecho en un ordenador bajo Windows porque es donde tenía acceso a un Acrobat completo, pero bajo Mac es el mismo procedimiento.

El problema:
Tenemos un libro de 420 páginas escaneado en un pdf. El libro fue escaneado con las dos páginas enfrentadas (p.e., 2 y 3) en una imagen en cada página del pdf, resultando un fichero de 210 páginas en formato A4 apaisado. Nos interesa conseguir un fichero con cada página del libro separada en cada página del pdf.

La solución:
  • Abrimos el pdf en Acrobat (la versión completa, en mi caso, Acrobat 5)
  • Con la opción Recortar Página (comando-T), seleccionamos la página de la izquierda (margen derecho a 148) y lo aplicamos a todas las páginas del documento. De esta forma, conseguimos un fichero con todas las paginas pares.
  • Exportamos el fichero a imágenes jpg, poniendo en el nombre i.jpg. De esta forma, conseguimos una carpeta con 210 imágenes nombradas i_001(2,3,...)_0001.jpg. No sé por qué añade el 0001 al final, pero es igual.
  • Repetimos el procedimiento para las páginas de la derecha, cambiando el recorte por el margen izquierdo a 148mm y salvándolas como d.jpg. Ahora tenemos una carpeta con las 420 páginas nombradas alternativamente i_001_0001.jpg, d_001_0001.jpg, etc.
  • Para que nos queden ordenadas alfabéticamente según van en el libro, las renombramos. Esta es la linea de comandos para Windows (probada):
    ren i_???_0001.jpg 1_???_1.jpg
    ren d_???_0001.jpg 1_???_2.jpg
    Para el terminal de MacOS os remito a la excelente bitácora de Juan de Dios Santander, Memoria de Acceso Aleatorio, donde explica con detalle las opciones. Mucho de lo allí explicado sirve también para otros sabores de Unix.
  • Abrimos la primera imagen con Acrobat. A continuación vamos a la opción Insertar páginas y seleccionamos todos los jpg que faltan por orden alfabético. En mi caso, no se si por limitación de Windows, del acrobat o de lo dos, lo tuve que ir haciendo en grupos pequeños, de 60 páginas. Se sitúan al final del documento en cada momento. Se guarda en un documento nuevo y listo.

Gracias a todos los que han aportado ideas para este truco, especialmente a toda la gente de la inigualable Lista de Soluciones de Planeta Mac.

sábado, 2 de agosto de 2008

Envenenamiento DNS y MacOS X

Mucho se ha hablado estos días del fallo generalizado en los servidores DNS descubierto por Dan Kaminsky. Para el que no esté muy al tanto, un fallo en la implementación de la comunicación entre el cliente y el servidor DNS hacía predecible la secuencia usada y podía ser envenenada la respuesta incluyendo información falsa sobre la traducción de un sitio. Aunque hay medidas de seguridad para que no se incluya información no deseada, hay trucos (por ejemplo, incluir un vínculo en una página sospechosa a video.banco.com, que no existe, devolver la respuesta envenenada a través de la explotación del fallo, incluyendo www.banco.com) para saltarselos. El resultado puede ser demoledor. La página que estamos viendo puede ser otra falsificada, para obtener nuestros datos de acceso.

La mayor parte de los fabricantes han sacado parches para el fallo, que consiguen una mejor aleatoriedad en las secuencias y puertos de comunicación. Apple también ha sacado el parche en la actualización 2008-005. Sin embargo, según parece, el problema no ha sido solucionado y el MacOS es aún vulnerable.

El caso es preocupante porque el sistema cachea las peticiones DNS y, si estas están envenenadas con datos falsos, puede ser usadas para engañarnos.

Poco hay que se pueda hacer por parte del usuario. La única medida posible es borrar la caché del DNS antes de acceder a páginas importantes (webmail, bancos, etc.).

Para ello, en el terminal ejecutamos:

sudo dscacheutil -flushcache


Con eso eliminamos toda la información contenida en la misma, reduciendo grandemente la posibilidad de que esta esté perjudicada.

Si estamos bajo 10.5.1 o anterior:

sudo lookupd -flushcache


Para que sea lo más efectiva posible, la orden ha de introducirse justo antes de que introducir la dirección en la barra de navegación. Es decir:

  1. Abrimos el navegador
  2. Ejecutamos la orden de borrado de caché de DNS
  3. Entramos a la página del banco.
Esperemos que Apple lo solucione pronto.

Actualizado 16-9-08:

Apple lo ha actualizado dos meses después.