miércoles, 2 de noviembre de 2011

Crear libros DjVu a partir de imágenes

En el trabajo nos repartieron el material para un curso interno como un archivo comprimido RAR lleno de las imágenes JPEG. El archivo RAR pesaba poco más de 170 MiB.
Mi primera reacción fue cambiarle la extensión y convertir el archivo en un CBR, sin embargo, leer el archivo con Evince se hacía tedioso debido al alto tiempo de carga entre imágenes.
Luego, recordé que el formato DjVu es particularmente bueno para almacenar libros digitalizados. Una vez que me topé con un manual de WikiCommons adapté el procedimiento. A continuación los pasos que seguí:
  1. Organizar en carpetas: Así se facilita procesar masivamente los archivos y se evita reescribirlos o traspapelarlos accidentalmente. Los comandos utilizados fueron:
    mkdir jpeg
    mv *.jpeg jpeg/
    mkdir pbm
    mkdir limpio
    mkdir djvu
  2. Convertir los JPEG a PBM de tamaño uniforme: Como algunas páginas estaban digitalizadas con una resolución de 5100x7033 y otras en 2550x3517, decidí estandarizarlas a 2550x3517, que resultaba suficientemente legible. El formato PBM es ideal para páginas digitalizadas sin color ya que es binario: blanco o negro (sin escala de grises). El comando utilizado, desde la carpeta que contiene todas las imágenes JPEG fue:
    cd jpeg/
    find -type f -exec convert {} --resize 2550x3517 ../pbm/{}.pbm \;
    cd ..
  3. Limpiar los archivos PBM: Los archivos que me hicieron llegar contenían páginas torcidas, se veía la junta entre páginas, páginas manchadas, etc. Para limpiarlas se ejecuta:
    cd pbm/
    find -type f -exec unpaper --layout single {} ../limpio/{} \;
    cd ..
  4. Convertir a formato DjVu: Ahora cada página se convierte en un archivu DjVu individual, utilizando los comandos:
    cd limpio/
    find -type f -exec cjb2 -clean {} ../djvu/{}.djvu \;
    cd ..
  5. Juntar el libro en un archivo DjVU: Finalmente, se unen todas las páginas DjVu individuales en un sólo archivo de múltiples páginas, utilizando el comando:
    djvm -c libro.djvu djvu/*
  6. Agregar capa de texto: Opcionalmente se le puede agregar al libro digital una capa de texto que facilite su accesibilidad y el copiado de texto, utilizando el comando (nótese que "eng" se debe a que el libro está en inglés):
    ocrodjvu -o libro-ocr.djvu libro.djvu --language=eng
El libro completo sin capa de texto pesaba apenas 2 MiB y con capa de texto 2,2 MiB, lo cual representa menos de 1.30% de los 170 MiB originales.
Las dependencias de este manual se pueden instalar en Ubuntu, Debian o sus derivados ejecutando, como administrador (o con sudo), la siguiente instrucción:
apt-get install imagemagick unpaper djvulibre-bin ocrodjvu --install-recommends
En caso de que el texto del libro no se encuentre en inglés, se debería instalar también el paquete tesseract-ocr-??? apropiado.

domingo, 25 de septiembre de 2011

Sincronizar teléfonos Blackberry en Linux

Una de las debilidades de Linux es la sincronización de los teléfonos móviles con el sistema. Existen algunas aplicaciones como Gammu/Wammu para los teléfonos Nokia, y seguro hay algo por allí para los teléfonos con Android. Yo pensé que mi BB y mi PC estaban condenadas a sólo conectarse como unidad de almacenamiento externa, pero encontré un proyecto que está muy bien encaminado para saldar esta brecha.
Se trata de Linberry, una aplicación en español desarrollada para Ubuntu y compatible con otras plataformas Linux. La puedes descargar acá. Permite sincornizar diversos datos de usuario e incluso utilizar el teléfono como modem.
Otra opción, de la cual he leído algo pero todavía no he probado es barry. Sería interesante ver una comparación de funcionalidades de ambas opciones.

sábado, 4 de junio de 2011

Metaesploit con Ubuntu y RVM

He decidido practicar pruebas de penetración de sistemas informáticos, y para ello una de las herramientas en boga es el marco Metaesploit. Hasta ahora lo había utilizado con la distribución de seguridad Backtrack, pero prefiero instalarlo en mi sistema Ubuntu (10.04 LTS) de uso diario. Como esta herramienta fue programada en Ruby, hace falta instalarlo en nuestro sistema. Hace no tanto que publiqué un artículo documentando este proceso.
Ruby

Si no se tiene instalado Ruby
Es necesario modificar ligeramente los pasos indicados en el artículo. Después de 6 se ejecuta:
sudo aptitude install libssl-dev
Y el paso 7 se sustituye por:
rvm install 1.9.2 --with-openssl-dir=/usr/lib
Después se puede continuar con los siguientes pasos.

Si ya se siguió esta guía con anterioridad
Va a ser necesario agregarle soporte SSL a la instalación de Ruby. Para ello se instala el paquete con las cabeceras de SSL:
sudo aptitude install libssl-dev
Luego, se compila la extensión de Ruby para SSL
cd ~/.rvm/src/ruby-1.9.2/ext/openssl
ruby extconf.rb make && make install
Si ya se tiene un ambiente Ruby con SSL activado
Se puede saltar al siguiente paso.
Metaesploit
Se descarga el paquete de Metaesploit para UNIX desde el sitio web.
Se descomprime el paquete bien sea utilizando la interfaz gráfica, o el comando:
tar -xvjf framework-XXXX.tar.bz2
Se accede a la carpeta
cd msf3
./msfconsole
¡Listo! Metaesploit con RVM en Ubuntu
Referencias
http://cjohansen.no/en/ruby/ruby_version_manager_ubuntu_and_openssl
http://beginrescueend.com/packages/openssl/

jueves, 12 de mayo de 2011

Gestionar VPN con Network-Manager

Por razones de trabajo, se hace necesario que pueda acceder a diversos servicios y servidores de la empresa remotamente, bien sea desde mi hogar u otro sitio.
Para eso está configurada una VPN utilizando OpenVPN. A todos nos dieron nuestro certificado y la instrucción de ejecutar la instrucción "sudo openvpn certificado.ovpn" e ingresar las credenciales correspondientes en la consola. Tener que abrir una consola sólo para esto me parecía ligeramente fastidioso, pero como siempre tengo abiertas varias consolas, no di demasiada importancia.
Hasta que me fijé que Network-Manager tenía la opción de gestionar VPNs.
Lo primero que hay que hacer es verificar si está instalado el complemento de Network-Manager para el tipo de VPN que utilizamos (en mi caso OpenVPN). Para ello basta con ejecutar "aptitude search network-manager" y ver si está instalado (i) o no (p).
Se procede a instalar el complemento adecuado, si es necesario (en mi caso "sudo aptitude install network-manager-openvpn").
Para configurar la conexión VPN podemos hacer clic en el applet de Network-Manager, ir hasta el renglón "VPN" y seleccionar la opción "Configurar VPN" en el menú desplegable. Otra forma es ir a Sistema, Preferencias, "Conexiones de Red" y seleccionar la pestaña VPN.
Una vez que estamos allí, hacemos clic en Importar, seleccionamos el archivo con la configuración de la VPN (en mi caso un *.ovpn).
Allí podemos indicar el nombre de usuario sin indicar la contraseña, si queremos que la pregunte, o meter todos los datos en caso contrario.
En mi caso, tuve que seleccionar la opción que limitaba la conexión por VPN a las direcciones de esa red para no afectar la conexión regular a internet.

Ver un portal con dominio suspendido

El otro día mi novia me pidió ayuda para conseguir una información específica de una oficina pública, y yo como usuario súper avanzado de Google salté de una vez a hacer esas consultas avanzadas - que ahora agrupan bajo el término Google Hacking.
Pero la oficina no se dejaba: sus sitios estaban caídos, sus perfiles en las redes sociales no tenían la información, y los sitios de terceros sobre la oficina tampoco.
Cuando ya estaba listo para tirar la toalla, decidí consultar los datos WHOIS de los dominios de la oficina, pero no encontré la información que buscaba allí. Lo que sí encontré fue la información de que el registrante del dominio lo había suspendido (eso explicaba que los sitios estuviesen caídos) Y los servidores DNS que el sitio había provisto (¡Bingo!). Algo me decía que con esta información podía circunvenir la suspensión del dominio.
Lo primero que intenté fue agregar esos servidores de nombre a la conexión de internet que utilizaba a través de la consola de Network-Manager. Fracaso.
Luego, pensando que podía ser algo de Network-Manager, me fui derechito a editar /etc/resolv.conf. Fracaso.
Entonces me puse a pensar en alguna herramienta que me permitiese resolver el dominio pasándole el servidor de nombre como parámetro. Ya sabía que nslookup resolvía dominios, pero no sabía si se permitía especificar el servidor de nombres, así que consulté el manual y ví que la sintaxis que deseaba era nslookup dominio servidor. Segundo avance: tenía la dirección IP del servidor que alojaba el contenido de la página.
Pensando que tenía a Dios agarrado por la chiva, navegué directamente a la dirección IP, para encontrarme un panel (cpanel, creo) de esos que tienen los servicios de alojamiento. Fracaso.
Finalmente, se me prendió el bombillo y decidí editar el archivo /etc/hosts y agregar la línea "ip dominio", y luego al navegar a la dirección: ¡Éxito!
Espero les sea de utilidad.

miércoles, 11 de mayo de 2011

Ruby on Rails en Ubuntu

Ruby me ha llamado la atención desde cuando estudiaba en la universidad, sin embargo terminé dándole unas cuantas vueltas al asunto. Ahora que finalmente me decidí a probarlo para un proyectico personal, me encuentro con el conflicto fastidioso entre el ruby viejo de Ubuntu y la última versión del marco de desarrollo Ruby on Rails.
Afortunadamente, San Google me permitió hallar una buena guía en Internet que procedo a resumir y traducir al castellano. Mi sistema es una computadora bajo Ubuntu Lucid (10.04).
  1. Poner la casa en Orden
  2. sudo aptitude update && sudo aptitude full-upgrade
  3. Instalar las dependencias para descargar y compilar todo
  4. sudo apt-get install build-essential git-core curl
  5. Descargar e Instalar Ruby Version Manager (RVM)
  6. bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
  7. Configurar RVM
  8. echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc
    . ~/.bashrc
  9. Verificar las dependencias de RVM
  10. rvm notes
    ...
    # For Ruby (MRI & ree) you should install the following OS dependencies:
    ruby: aptitude install build-essential bison openssl libreadline6 libreadline6-dev
    curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0
    libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf
  11. Instalar las dependencias de RVM (salida de comando anterior)
  12. sudo aptitude install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf
  13. Instalar Ruby
  14. rvm install 1.9.2
  15. Configurar Ruby
  16. rvm use 1.9.2
  17. Verificar Ruby (opcional)
  18. ruby -v
    ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-linux]
  19. Configurar versión predeterminada de Ruby
  20. rvm --default use 1.9.2
  21. Instalar Rails
  22. gem install rails
  23. Instalar Complemento para MySQL (opcional)
  24. sudo aptitude install libmysqlclient16-dev
    gem install mysql
  25. Instalar Complemento para PostgreSQL (opcional)
  26. sudo aptitude install libpq-dev
    gem install pg

¡Listo! Ahora a revisar las guías y tutoriales para desarrollar en esta plataforma. Para mayores detalles sobre los pasos de esta guía, pueden ir al artículo original o la documentación de RVM

miércoles, 6 de abril de 2011

¿Cómo instalar el módem Huawei E1756?

Este módem USB se ha cruzado por mi vida ya un par de veces, la primera en el trabajo y la segunda a través de una amiga.
En el trabajo tuve que configurarlo para utilizarlo en la portátil corporativa, la cual tiene instalado Ubuntu 10.04.
Mi amiga me contrató para que la ayudase a instalarlo para su MacBook Pro, bajo Snow Leopard y para que revisase su funcionamiento en una portátil bajo Windows Vista (¡Qué mal!).
El detalle de este módem es que es módem y memoria extraíble. Bajo Windows esto permite que la primera vez que se conecte, se detecte una memoria USB, se dispare por ejecución autmática el instalador, y luego de "siguiente, siguiente, ..." se haya completado el proceso. Sin embargo, en Linux y Mac, esta duplicidad confunde al sistema operativo debido a que este dispositivo no viene provisto de controladores para estas plataformas.
Ubuntu 10.04
La mas sencilla de las instalaciones. Sólo hubo que instalar el paquete usb-modeswitch. Esto se puede hacer gráficamente con Synaptic o en la consola de comandos con:
sudo aptitude install usb-modeswitch

¡Y listo! La próxima vez que se conecte el módem a la computadora, lo reconocerá como tal, y se podrá elegir el operador telefónico en el menú de gestión de redes NetworkManager.
Windows

La más documentada de las instalaciones, aunque sólo es necesaria si la ejecución automática no funciona de la forma esperada. En la página web de las operadoras telefónicas que lo venden generalmente se encuentran disponibles los controladores para descargar. Estos controladores ya están configurados con los datos de la operadora correspondiente.
El controlador para Windows 7 se halla disponible en la página de Movistar Chile. Es posible que otras operadoras tengan una sección de descarga similar.
Si el controlador descargado es el genérico o de otra operadora, habrá que configurar la conexión. En herramientas, opciones se agrega una nueva conexión de tipo PAP, se introduce el valor de la APN de la operadora (buscar en google si no se conoce) y se deja el resto igual.
Max OS X
La más difícil de las instalaciones. No está bien documentada, además de que el controlador y los paquetes de configuración de las operadoras no están fácilmente disponibles.
Los pasos que seguí fueron:
  1. Descargar el Dashboard Installer de Huawei.
  2. Descargar el Dashboard genérico. Operadores como Movistar Chile tienen un su dashboard propio, buscar si junto al controlador para Windows la operadora provee este archivo. Son generalmente un archivo ISO o un archivo ISO comprimido.
  3. Al hacer doble clic en el archivo ISO (descomprimido) Mac OS X lo monta como un disco externo.
  4. Hacer doble clic en el Dashboard Installer, seguir los pasos del instalador y cuando pida un paquete, seleccionar el archivo .mpkg que se encuentra en el ISO.
  5. Se sigue el proceso de instalación.
  6. Si el dashboard descargado es el genérico o de otra operadora, habrá que configurar la conexión. En herramientas, opciones se agrega una nueva conexión de tipo PAP, se introduce el valor de la APN de la operadora (buscar en google si no se conoce) y se deja el resto igual.
  7. Se selecciona la conexión que creamos en el gestor y se hace clic en conectar.
Enlaces
http://www.lif3.com/2009/10/getting-huawei-mobile-broadband-to-work-in-mac-os-x-snow-leopard/
http://3g-modem.wetpaint.com/page/debranding+Huawei+USB+modems
http://www.huaweidevice.com/resource/mini/200910149695/testmobile1014/index.html

martes, 5 de abril de 2011

Probando, Probando... 1, 2, 3

Esta bitácora se erige como un deseo -sin cumplir- de retribuir algo a la sociedad de la información que tanto me ha dado.
En ella, espero documentar las soluciones a diversas dudas e inquietudes que se me presenten, y que estén relacionadas con el mundo de la computación, informática, etc.
Advertencias
  • Soy Linuxero desde mis tiempos (no tan lejanos) de estudiante en la universidad. En esta bitácora probablemente dedique unas cuantas líneas en las soluciones a los problemas que se me presenten en esta plataforma, muchas más de las que dedique a Windows o Mac. Muchas de mis recomendaciones se centrarán en aplicaciones y contenido libres.
  • Soy hispanista gracias a la influencia de uno de mis profesores humanistas de la universidad, y en esta bitácora haré grandes esfuerzos por evitar los anglicismos y los préstamos lingüísticos innecesarios.