Reto de programación: apretones de manos

Hace poco he participado en una prueba más de TopCoder.com, un excelente sitio para mantener engrasados los conocimientos de estructuras de datos, algoritmos, análisis y diseño de sistemas y programación general. Una de las pruebas me dejó varado y no pude completar a tiempo el ejercicio. Posteriormente he leído bastante al respecto y profundizado en la serie de los números de Catalan, en la que se basa la solución al problema. Sin más, os dejo con el enunciado, a ver si conseguís solucionarlo 😉

Consideremos una reunión de n personas alrededor de una mesa circular. Antes de comenzar la reunión, se dan la mano unos a otros. Cada persona estrecha la mano de otra persona en un momento dado (y sólo de una). Los apretones de manos se dan todos a la vez (es decir, en un momento dado, cada persona está estrechando la mano de otra) Decimos que un apretón de manos es perfecto si no hay brazos que se crucen entre sí en el momento del apretón. Dado un entero n, devolver el número de apretones de manos perfectos posibles que existen para n personas sentadas a la mesa.

Ejemplo:

si n = 4 personas, los posibles apretones de mano son:

HandsShaking_4_correct/tmp/HandsShaking_4_correct_2.GIF/tmp/HandsShaking_4_wrong.GIF

Las primeras dos figuras muestran apretones de manos perfectos. La 3ª no es un apretón de manos perfecto. La solución para n=4 por tanto es 2. Para n=8 sería 14.

Ubuntu es el rey del escritorio Linux

2007-distributions-sm.jpg Basaburu nos envía un interesante enlace hacia un análisis de distros usadas por el usuario de escritorio publicado por DesktopLinux.com. Lo primero que indica el análisis es que en 2007 han respondido 38.500 personas frente a las 14.535 del año pasado, lo cual lo relacionan con 3 factores: un aumento en el número de usuarios de escritorio Linux, la publicación en portada de Digg de la noticia sobre la encuesta y también en Heise Online, una web sobre noticias tecnológicas alemana. El mercado del escritorio está liderado por Ubuntu con un 30% de usuarios, seguido de SuSE con un 21% y familia-Debian (Debian, Freespire, Linspire, Linux Mint, MEPIS, Xandros) con un 14%. Mi querida Fedora-RedHat-CentOS se queda en 4ª posición con sólo un 9% y finalmente Gentoo con un 7%. El resto del pastel se lo reparten entre otras distros sin especificar.

En el gestor de escritorio gana GNOME a KDE por 45% frente a 35%, seguidos de Xfce. En navegadores, goleada de Firefox (60%) seguido de lejos por Konqueror (14%) y Opera (12%). En clientes de correo gana Thunderbird (37%) a Evolution (32%). También se indica que un 10% de los usuarios que han respondido indican que se han pasado a clientes web (mi caso, por ejemplo, gracias a la potencia de Gmail y su integración con GCalendar).

A la hora de ejecutar aplicaciones Windows en Linux la gente opta por Wine (44%) frente a VMWare (27%). Salto importante de VirtualBox que se coloca tercero con un 8%.

DesktopLinux también aporta un enlace para ver los datos en crudo de los resultados de la encuesta.

Diario de un exploit contra Joomla/Mambo

joomla_snapshot3.pngNota: llevaba bastante tiempo sin actualizar DiarioLinux.com preparando mis clases y peleándome con un proyecto en el que estoy metido. Así que, entre ayer y hoy me he dedicado a escribir un extenso artículo sobre seguridad informática, exploits, SQL Injection y protección (incluyendo un parche para un exploit recién publicado). Espero que os guste.

No sé si el CMS Mambo sigue existiendo como tal tras el fork que dió origen a Joomla en el 2005. De hecho, si entramos en la web principal de Mambo y pulsamos en «Download Mambo» nos encontramos con este mensaje de error al ser redirigidos a http://mamboxchange.com/frs/?group_id=5:»MamboXchange Could Not Connect to Database:»

En cualquier caso, el exploit al que me voy a referir y que acaba de publicar Milw0rm podría funcionar tranquilamente en una instalación Joomla sin actualizar, dado que afecta al módulo SimpleFAQ 2.11 y este módulo funciona tanto en Mambo como en Joomla. Sólo hay que analizar cómo funciona para hacerlo compatible 🙁 Lógicamente este exploit no debería de tener demasiado impacto dado que SimpleFAQ va ya por la versión 2.40 según la web de sus desarrolladores (aunque la primera corrección SQL Injection que se nombra en el ChangeLog corresponde a esta última versión…) y cualquier administrador que se precie debería de tener actualizado su sistema. Lo que es interesante es el proceso que se sigue para poner en marcha el ataque y las connotaciones que ésto tiene. En concreto, el hecho de que el exploit contenga una sóla línea, que se introduce en la URL del servicio a explotar, puede hacerlo devastador:


http://localhost/mambo/index.php?option=com_simplefaq&task=answer&Itemid=9999&
catid=9999&aid=-1/**/union/**/select/**/0,username,password,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/**/from/**/mos_users/*

El vector de ataque es un SQL Injection típico en dicha versión 2.11 de ese módulo (podría ser que en alguna versión superior también). Cuando se ejecuta con éxito, el servidor nos devuelve una lista de logins y passwords en formato MD5. Un ataque de fuerza bruta o mejor aún, una consulta con suerte a las Rainbow Tables y el password se desvelará ante nuestros ojos.

¿Cómo nos hemos enterado del exploit?
Estoy suscrito a varios feeds RSS con exploits de publicación diaria (sigue leyendo…)

Sigue leyendo Diario de un exploit contra Joomla/Mambo

hackMeeting 2007 : hackelarre

Blackhold nos escribe para informar sobre una nueva edición del hackmeeting:

» los días 12, 13 y 14 de Octubre[1] se va a celebrar el hackmeeting, este año bajo el nombre de hackelarre.

el hackmeeting es un evento autogestionado dónde todo el mundo puede dar charlas[2] (sobre temas de informática y sociales), por esto nos gustaria ver si era posible incluir un pequeño artículo en vuestro blog anunciando el evento y realizando un call4nodes[3] (llamar a la gente que venga a dar charlas).

el evento se autogestiona a través de la lista de correo[4] y el canal #hackmeeting en la red freenode (irc.frenode.org).

muchas gracias por vuestra atención.

[1]: http://www.sindominio.net/hackmeeting
[2]: http://www.sindominio.net/hackmeeting/index.php/2007/Nodos
[3]: http://www.sindominio.net/hackmeeting/index.php/2007/Traducciones/es
[4]: http://www.sindominio.net/hackmeeting/index.php/Manual/Lista_de_correo »

Peugeot migrará 20.000 puestos a Linux

Peugeot convertirá 20.000 de sus 72.000 puestos de usuario a Linux, usando  Novell SUSE Linux Enteprise Desktop. Esta distro incluye la versión Novell de OpenOffice.org 2. Además Peugeot ha decidido también comprar soporte para 2.500 servidores SUSE Linux. Ambas soluciones (Desktop y Server) se integrarán con una infraestructura típica de Windows, incluyendo Active Directory y Microsoft Office. Noticia original en InformationWeek.