OpenMeetings vs. DimDim

Posted on April 22nd, 2008 in Devel, Flash by admin (546 lecturas)

Hablando con Dani Gutiérrez sobre DimDim, me entero de la existencia de OpenMeetings, una aplicación que al parecer hace lo mismo que DimDim pero en esta ocasión, bajo licencia GPL sin limitaciones de conexiones concurrentes (en DimDim hay una limitación para la versión open, que restringe a 20 usuarios concurrentes las salas… la verdad es que en alguna página he leído que eran 10 y en otra que eran 20, el caso es que existe dicha restricción). Como digo, en OpenMeetings dicha restricción no existe y lo que es mejor: al parecer OpenMeetings surge como un fork de DimDim, cuando DimDim decidió montar una versión privativa y añadir la citada limitación a la versión open. A los desarrolladores que habían estado trabajando en DimDim esa maniobra no les gustó y decidieron hacer un fork de la última versión totalmente GPL, llamándola OpenMeetings y alojandola en Google Code. El caso es que uno de esos desarrolladores es argentino y dispone de un blog en el que ha publicado un documento, howto, en el que explica paso a paso, con todo detalle, y en castellano, cómo instalar OpenMeetings en Debian Etch. Genial.

JavaCup 2008: demuestra tus habilidades Java

Posted on April 21st, 2008 in Devel, Java by admin (282 lecturas)

¿Sabes programar en Java? No hay que ser ningún experto, basta con que sepas seguir un API para poder participar en el concurso JavaCup 2008, organizado por JavaHispano y SUN Microsystems por 2º año consecutivo. El objetivo: programar una táctica que seguirá tu equipo de fútbol virtual para derrotar al contricante. Incluso hay vídeos explicativos paso a paso de cómo crear un equipo simplón ;-)  El año pasado animé a mis alumnos a participar y no tuve éxito. Veamos si este año encuentro a algún valiente ;-)

Open Dialect : un IDE opensource para desarrollo Flash en Linux

Posted on April 16th, 2008 in Devel, Flash by admin (434 lecturas)

Open Dialect es un IDE libre para desarrollo Flash en Linux desarrollado en C# usando el framework .Net 2.0

Todavía está en una versión 0.2 y sólo está disponible para Linux desde hace unas 24 horas :-) pero ya permite la creación y testeo de ficheros .SWF . Puedes ver un ejemplo de Open Dialect en acción en http://www.t21northamerica.com/T21NorthAmerica.html

Puedes descargar el código, instalarlo y seguir el desarrollo a través de la web oficial.

Proyecto Euler: reto a tus conocimientos de programación

Posted on April 13th, 2008 in Devel, Retos by admin (315 lecturas)

El Proyecto Euler publica una serie de problemas de programación en los que es necesario tener algo más que conocimientos matemáticos básicos para resolverlos. Aunque las matemáticas ayudarán a encontrar soluciones elegantes y eficientes, el uso de un ordenador y buenos conocimientos de programación serán más que necesarios para resolver la mayoría de los problemas.

La motivación por la que comenzó el Proyecto Euler es la de ofrecer una plataforma para la mente inquieta que quiera adentrarse en nuevas áreas y aprender nuevos conceptos de una forma divertida e interesante.

¿Quieres saber en qué nivel están tus conocimientos de programación? Prepara tu cafetera, coge papel y lápiz, y entra en el Proyecto Euler…

Concurso de extensiones para Firefox 3

Posted on April 8th, 2008 in Devel, Firefox by admin (413 lecturas)

La noticia es del pasado 20 de Marzo (hace ya algo más de 15 días), pero se pasó y creo que es interesante. Mozilla Lab ha anunciado el concurso “Extend Firefox 3“, donde se reta a los programadores a desarrollar una extensión para la versión 3 del navegador, a ser posible, haciendo uso de las novedades que esta versión aporta. Podéis ver las reglas del concurso en la página anterior, pero por resumir: hay dos categorías, mejor extensión original, y mejor extensión actualizada (para premiar a los desarrolladores de nuevas extensiones y a aquellos que se preocupen de actualizar extensiones ya existentes). Los premios son jugosos en ambas categorías:

viaja al Mozilla Developer Day 2008 (de la región que el campeón quiera) (valor aprox. en dólares: $1,750), un Apple MacBook Air computer ($3,000), VMware Fusion (ARV: $200), ActiveState Komodo IDE 4 con T-Shirt y taza ($350), y una bolsa para el portátil con logos, pegatinas, camisetas y libros de Firefox ($300). Total, unos $5,600 en premios para los 3 primeros clasificados.

Los siguientes 6 clasificados recibirán: ActiveState Komodo IDE 4 con camiseta y taza ( $350), y la bolsa Firefox para el portátil ($300), haciendo un premio total de unos $650.

Fechas: el concurso comenzó el 17 de Marzo de 2008 y finalizará el 4 de Julio de 2008. ¡Ánimo a todos los participantes!

Plantilla en Java del patrón Singleton para Eclipse

Posted on April 1st, 2008 in Devel, Eclipse, Java by admin (396 lecturas)

Parafraseando a Groucho Marx: éstos son mis títulos de post. Si a usted no le gustan, tengo otros ;-)

Warning: post muy técnico.

Si programas en un lenguaje orientado a objetos, es probable que te hayas encontrado a menudo con el patrón singleton. Últimamente me he encontrado tecleando las líneas de este patrón en Java una y otra vez, con lo que se me ha encendido la bombilla de la pereza: “y ésto… ¿no lo podré automatizar?” Por supuesto. En Eclipse es sencillo:

Window->Preferences->Java->Editor->Templates. Click en New e insertar el siguiente código. Darle un nombre (”singleton” podría ser una decisión acertada ;-) . Cuando quieras usar el patrón en tus clases Java, escribe “singleton” y pulsa Ctrl+Espacio. ¡Magia!

private static ${enclosing_type} instance;
private ${enclosing_type}(){}
public static ${enclosing_type} getInstance(){
if(null == instance){
instance = new ${enclosing_type}();
}
return instance;
}

Nota: ojito, que esta forma de implementación del patrón parece sufrir una condición de carrera en el bloque if … una posible solución sería inicializar la referencia estática en la propia sección de declaraciones.

HackIt! 2007 : nivel 6: solución

Posted on March 30th, 2008 in Devel, HackIt, Seguridad by admin (245 lecturas)

Reverse Engineering. Cracking. Un poco de conocimientoso sobre ambos temas serán imprescindibles para
pasar este nivel (os he dejado muchos días para que fuerais sacándolo por vuestra cuenta, ¿qué tal os ha ido?) Vamos a por ello. Tras descargarnos el fichero .zip que indica la página, lo descomprimimos e intentamos ejecutar (txipi nos dijo que no había virus ni código maligno en los ejecutables, por eso nos atrevemos a ejecutar un binario a pelo…). La salida es bastante pobre, por decir algo:


sh-3.2$ ./program
sh-3.2$

Así que toca depurar con GDB.


$ gdb ./program
warning: no loadable sections found in added symbol-file /tmp/program
(no debugging symbols found)

Vaya, si no hay tabla de símbolos, la depuración puede ser un infierno. Así que comprobemos primero que el ejecutable
no haya sido comprimido con UPX o similares (UPX es el compresor más conocido de ficheros ELF en Linux):


$ upx -l ./program
Ultimate Packer for eXecutables
Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007
UPX 3.00 Markus Oberhumer, Laszlo Molnar & John Reiser Apr 27th 2007
.
File size Ratio Format Name
-------------------- ------ ----------- -----------
532432 -> 52404 9.84% linux/elf386 ./program

¡Tachán! Efectivamente el ejecutable está comprimido con UPX. Descompresión al canto:


$ sh-3.2$ upx -d ./program
Ultimate Packer for eXecutables
Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007
UPX 3.00 Markus Oberhumer, Laszlo Molnar & John Reiser Apr 27th 2007
.
File size Ratio Format Name
-------------------- ------ ----------- -----------
532432 <- 52404 9.84% linux/elf386 program
Unpacked 1 file.

Y ahora volvemos a pasarlo por GDB, a ver qué nos dice:


sh-3.2$ gdb ./program
GNU gdb 6.6-debian
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb)

Mejor :-) Bien, vamos a poner un punto de ruptura en main():


(gdb) break main
Breakpoint 1 at 0x8048455
(gdb)

Ejecutemos hasta el punto de ruptura y pidamos un desensamblado de la zona:

(gdb) run
Starting program: /tmp/program
Breakpoint 1, 0x08048455 in main ()
(gdb) disassemble
Dump of assembler code for function main:
0x08048444 : lea 0×4(%esp),%ecx
0×08048448 : and $0xfffffff0,%esp
0×0804844b : pushl 0xfffffffc(%ecx)
0×0804844e : push %ebp
0×0804844f : mov %esp,%ebp
0×08048451 : push %edi
0×08048452 : push %esi
0×08048453 : push %ebx
0×08048454 : push %ecx
0×08048455 : sub $0×78,%esp
0×08048458 : movl $0×0,0xffffffec(%ebp)
0×0804845f : lea 0xffffffd0(%ebp),%eax
0×08048462 : mov %eax,(%esp)
0×08048465 : call 0×804837c
0×0804846a : movl $0×0,0xffffffe8(%ebp)
0×08048471 : jmp 0×8048477
0×08048473 : addl $0×1,0xffffffe8(%ebp)
0×08048477 : cmpl $0×98967e,0xffffffe8(%ebp)
0×0804847e : jle 0×8048473
0×08048480 : lea 0xffffffc0(%ebp),%eax
0×08048483 : mov %eax,(%esp)
0×08048486 : call 0×804837c

Bien, se ve la zona de paso de variables a la pila (guardar el contexto) y primera llamada call (por el nombre de la función, times, parece que hace algún tipo de comprobación) y en función del resultado, en main+45 saltamos a main+51. Ahí nueva comparación… saltamos (hacia atrás) a main+47. Parece un bucle, ciclando hasta que se cumpla cierta condición. Posteriormente, se hace una nueva llamada a “times”, haciendo alguna nueva comprobación:


0x08048486 : call 0×804837c
0×0804848b : mov 0xffffffc0(%ebp),%edx
0×0804848e : mov 0xffffffd0(%ebp),%eax
0×08048491 : mov %edx,%ecx
0×08048493 : sub %eax,%ecx
0×08048495 : mov %ecx,%eax
0×08048497 : mov %eax,0xffffffe8(%ebp)
0×0804849a : cmpl $0xa,0xffffffe8(%ebp)
0×0804849e : jle 0×8048586
0×080484a4 : movl $0×80c89a8,(%esp)
0×080484ab : call

En main+90 hay alguna condición que tras comprobarla hace que el programa termine (salta a main+322). Vamos a cortocircuitar este último salto . a ver qué pasa ;-) :

(gdb) j *0x080484a4
Continuing at 0x80484a4.
username? jota
error: wrong serial number!
Program exited normally.
(gdb)
Vaya, algo hemos avanzado, porque al menos nos pide username… Pero poniéndole cualquier cosa (jota, p.ej.), vemos que no le gusta.
Mmmmmhhh… volvamos a la carga:


(gdb) run
Starting program: /tmp/program
.
Breakpoint 1, 0x08048455 in main()
(gdb) disassemble
...
0x080484ab : call 0×804835c
0×080484b0 : lea 0xffffffac(%ebp),%eax
0×080484b3 : mov %eax,(%esp)
0×080484b6 : call 0×804833c
0×080484bb : mov $0×303c48b1,%eax
0×080484c0 : sub 0xffffffec(%ebp),%eax
0×080484c3 : mov %eax,0xffffffec(%ebp)
0×080484c6 : addl $0×2faf080,0xffffffec(%ebp)
0×080484cd : cmpl $0×0,0xffffffec(%ebp)
0×080484d1 : jne 0×804857a
0×080484d7 : movb $0×9b,0xffffffe0(%ebp)


Entre el printf (”username”) y el gets (recogida del parámetro por teclado) no hay nada que destacar.
Lo siguiente termina en un jne a main+310. Volvamos a cortocircuitar (no queremos saltar en main+141… queremos ir
a la siguiente instrucción) :

(gdb) j *0x080484d7
Continuing at 0x80484d7.
correct! password = d3nb0r4
Program exited normally.
(gdb)

¡Qué bonito password! :-)

Fedora Koji: sistema de construcción y tracking de RPMs

Posted on March 26th, 2008 in Devel, Fedora by admin (286 lecturas)

Koji es el sistema desarrollado por Fedora para permitir la construcción y trazabilidad automática de RPMs.  En concreto, permite tomar código fuente del CVS original y convertirlo en un paquete RPM para Fedora.  Koji dispone de distintos interfaces de acceso, siendo el más sencillo de usar el interfaz web (que podemos ver aquí). El sistema automático de construcción de paquetes permite disponer del RPM de una aplicación a los pocos días de su publicación … de hecho, yo lo he conocido buscando un paquete RPM de Inkscape 0.46 para Fedora8, cuya fecha oficial de publicación ha sido… ¡hoy!

Ubuntu 8.04 beta 1 ya en sus pantallas

Posted on March 21st, 2008 in Devel, SoftLibre, Ubuntu by admin (793 lecturas)

Entre las novedades de esta versión, aparte de lo que ya ofrece Fedora Core 9 (lo siento, tenía que decirlo ;-), se incluyen aplicaciones como Likewise Open  , un sistema que permite la autenticación de usuarios Linux en una red Microsoft usando Active Directory. Un usuario Linux puede loguearse en Linux usando las credenciales de Active Directory, y acceder a cualquier servicio kerberos que albergue la máquina Linux.

Vinagre, el nuevo cliente VNC de GNOME.

Al parecer se incluye también una nueva versión de Inkscape, la 0.46 que introduce el soporte de PDF nativo, ofreciendo la posibilidad de editar textos y gráficos en documentos PDF. ¿Será verdad? Lo probaremos e informaremos en otro post (o si algún lector ya lo ha hecho, se agradecería que nos enviara un email para publicarlo…)

Otra novedad: Wubi, una aplicación que permite instalar Ubuntu desde Windows . Muy interesante también, aunque había oído hablar de ella no la había probado y no creía que estuviera lo suficientemente madura como para incluirla de serie en Ubuntu. Parece que me equivocaba.

Estas vacaciones de semana santa pueden ser un buen momento para probar la beta en una máquina virtual. Eso sí, si tienes una tarjeta wireless Broadcom léete este bug.

Las universidades españolas promocionan el uso de software libre

Posted on March 20th, 2008 in Devel, SoftLibre by admin (370 lecturas)

Gracias a Ainhoa Eceiza (iKide) me entero de la reciente publicación del informe UNIVERSITIC 2007 (de la Conferencia de Rectores de las Universidades Españolas - CRUE) en el que se ha establecido como objetivo:

Objetivo 5.4. Facilitar el acceso a herramientas de software libre y código abierto

“Los resultados que se muestran a continuación presentan una mejora general en este objetivo:

  • En la campaña 2007 hemos detectado que el 10% de los ordenadores de las universidades tiene instalado un sistema operativo de libre distribución como sistema operativo, lo cual supone un incremento del 12% con respecto a la campaña anterior.
  • El 33% de los productos utilizados en las universidades son de software libre, continuando ya la tendencia creciente mostrada en el último año (Gráfico 10). Así, en todas las universidades que aportaron información correspondiente a este ítem, el porcentaje de productos de software libre en explotación sobrepasa ya el 10%.”

(pag. 42 del informe)

Esperemos que la UPV/EHU tome buena nota de esto. Afortunadamente, en la Facultad de Informática de Donostia al menos, cada vez se está tomando más conciencia de este tema y se están dando pasos muy interesantes… aunque la UPV/EHU insista en llevarnos por otros caminos.

Next Page »