viernes, 14 de agosto de 2015

Recodificar claves MD5

Semanas atrás estaba trabajando en la migración de casillas de correo a un servidor nuevo basado en ZIMBRA.  Se quiere que los usuarios autentiquen en el nuevo sistema con sus passwords actuales. Las passwords actuales están encriptadas con el algoritmo MD5, almacenadas en una base de datos MySQL. En Zimbra se utiliza "autenticación interna", las claves se almacenan en OpenLDAP (atributo userpassword).

Zimbra encripta las passwords con el  algoritmo SSHA, pero admite passwords con otros algoritmos. Queriendo migrar las password de un sistema a otro, nos encontramos que era necesario recodificar las passwords almacenadas en la base datos, para que pudieran ser utilizadas con exito. OpenLDAP almacena las passwords en un formato binario, codificado en base64. Aquí se discute esto, con ejemplos en PHP. Y en este mensaje de una lista de OpenLDAP encontramos la razón de nuestro problema y un script de conversión.Copio acá el script:

#-------------------------------------------#
#!/usr/bin/perl
use MIME::Base64;
use strict;
my @md5 = split "",$ARGV[0];
my @res;
for (my $i = 0 ; $i < 32 ; $i+=2)
{
my $c = (((hex $md5[$i]) << 4) % 255) | (hex $md5[$i+1]);
$res[$i/2] = chr $c;
}
print "{MD5}".encode_base64(join "", @res);
#-------------------------------------------#
 

Cambiar la contraseña encryptada en Zimbra

Solo nos resta cambiar en la cuenta de zimbra la contraseña y poner la que acabamos de recodificar. Esto se hace desde linea de comandos, corriendo zmprov con el usuario zimbra:

zmprov ma usuario@dominio userPassword 'X03MO1qnZdYdgyfeuILPmQ==' 

Otras aplicaciones

Esta información puede servir para migrar otras aplicaciones que utilizan MySQL (mediante PAM) para autenticar usuarios.

lunes, 10 de agosto de 2015

Ayuda para usar el vi

Esta no es una apología del vi, el editor de texto standard de Linux y UNIX.  Editar archivos de texto plano es una tarea frecuente, VI es el editor que se instala por defecto en ambientes UNIX (y UNIX like). Tener un buen manejo de este editor es importante para trabajar en Linux, UNIX y afines (*BSD) o realiza tareas avanzadas en MacOS X. Para alguno de mis ocho lectores fanático de Emacs: no le tengo especial aprecio, tampoco lo rechazo. Me hice al habito de trabajar en vi, soy bastante productivo con el.

El vim, una implantación de vi, ha reconciliado con vi a muchos de sus más acérrimos detractores. Contando con sintaxis coloreada para muchos lenguajes de programación y ayuda en linea. De todas formas, no se puede negar que la curva de aprendizaje es empinada. Hace muchos años con Enrique Verdes creamos una cartilla de VI, para facilitar el aprendizaje y uso.

En la desaparecida revista Linux+ (edición española) se publicó un buen articulo para utilizar el VIM como entorno de desarrollo, por Jorge Emanuel Capurro. Por suerte el articulo se puede descargar de aqui.

Esta entrada la motivó un comentario sobre un cheat sheet para vim.Creada por Max Cantor, es posible comprar un Poster Gigante para decorar la oficina (o regalar en el programmer Day o sysadmin Day). Esta disponible para descargar una versión de de baja resolucion (para uso personal) en vimcheateet.

martes, 4 de agosto de 2015

Fotografo y/o Modelos se buscan ...

Una fotógrafa curioseaba en una tienda de Richmond, encontró 4 cajas de diapositivas. Las lleva a su casa, las escanea ... y quedo asombrada de lo que encontró. Quiere saber más sobre quien tomo esas fotografiás y las modelos.
2 de las tiras de diapositivas

Una de las imagenes (Facebook de Megan Abell Fotography)

Publico las fotos escaneadas en Facebook, muchos aventuraron conjeturas sobre las fotos:
  • La opinión general es que las fotos fueron tomadas en California, específicamente en playa del Rey.
  • Hay opiniones diversas sobre las fechas de las fotos, desde fines de los 40 del pasado siglo, hasta fines de los 60. Muchos coiniden con fines de los años 50 como la fecha más probable.
Me gustan estos descubrimientos, como publique en su momento de Vivian Maier, y muchísimos archivos más que esperan  ser descubiertos. Hay más de esta historia en el facebook de Megan Abell y en Looks like Film.

lunes, 3 de agosto de 2015

Configurar PHP:YAZ

YAZ es una toolkit para desarrollar clientes y servidores Z39.50. Estos servicios son utilizados fundamentalmente en sistemas gestión de bibliotecas, como Koha o PMB. Para una instalación de PMB necesité configurar esta extensión de PHP. La extensión esta disponible a través de PECL

Es prerrequisito tener instalada la librería YAZ, la extensión de PHP es un wrapper. Se puede bajar del sitio del desarrollador, allí hay disponibles paquetes para varias distribuciones y Windows. En mi caso, trabajé sobre OpenSuSE, los paquetes a instalar son: yaz, libyaz y libyaz-devel. Una vez instalado estos paquetes es necesario ajustar algunos caminos para facilitar el trabajo de PECL. En mi caso ejecute:

cd /usr/share/doc/packages/yaz && mkdir bin && cd bin && \
 for i in $(ls /usr/bin/yaz-*); do ln -s  $i; done

PECL espera encontrar la configuración de yaz, y sus herramientas, bajo un mismo árbol de directorios. Estos comandos corrigen esto, los paquetes instalan las herramientas bajo /usr/bin. Para que PECL compile PHP:YAZ es necesario tener instalado el compilador de C/C++, Make y la herramienta re2c.

Lanzamos la instalación con pecl ejecutando: pecl install yaz. Nos va a pedir el camino (PATH) a yaz, en mi caso es /usr/share/doc/packages/yaz. La compilación e instalación deben transcurrir sin problemas. Luego de eso tenemos que habilitar la extensión en PHP. Una opción es editar el archivo php.ini, otra es crear un archivo y agregarlo en el directorio de configuración de PHP (en OpenSUSE/SLES /etc/php5/conf.d/). En cualquiera de las dos opciones tiene que ir una linea como la que sigue:
extension=yaz.so
Reinicamos o recargamos apache y la nueva extension queda activa.