Microsoft entrega a Samba la especificación de SMB

December 20, 2007

Leo en Meneame que después de perder un par de juicios contra la Unión Europea por interoparibilidad, Microsoft ha cedido y ha enviado la Especificación del Protocolo SMB vía la agencia Protocol Freedom Information Foundation a los desarrolladores de Samba, un proyecto que intenta intercomunicar máquinas UNIX con máquinas Windows.

La entrega de la especificación no ha venido cargada de controversia, ya que Microsoft no libera la especificación, sino que la entrega a los desarrolladores de Samba através de un NDA (Non-Disclosure Agrement, Contrato de No Divulgación, en Inglés), aunque permite que la especificación sea implementada en código fuente. Otra cosa es que la especificación no incluye patentes, por lo que a Samba todavía le queda averiguar si no infringe patentes de Microsoft.

En lo personal le doy mis más sinceras felicitaciones a la Unión Europea por obligar a Microsoft a entregar a Samba el protocolo que usa, lo cual redundará en un Samba más estable y maduro para las próximas entregas. Pero a la vez manifestar mi descontento con que la especificación no haya sido liberada y que todavía tenga el problema de las patentes de por medio.

Pero hay una cosa por la que estar alegres, Samba es Software Libre bajo la GNU GPL, por lo que si ellos implementan el protocolo dado por Microsoft, nada impide a un Ingeniero calificado de leer el código fuente y publicar una Especificación “No Oficial” de la cual podría guiarse la comunidad. Y ya que no sería uno de los que firmó el NDA, este contrato no tendría validez en este caso.

(Nota: Puede que sea muy optimista. Si hay algún abogado entre mis lectores que sepa del tema, agradecería que nos lo aclarara)

Espero que el próximo año Samba nos traiga una sorpresa con respecto a su producto y que no hayan patentes intrusivas en medio del desarrollo. También espero que alguien se anime a escribir una “Especificación No Oficial” del protocolo SMB para poder acabar con el problema del NDA.

Ingeniería Inversa al Celular LG MG201D

December 15, 2007

Como decía en un post anterior, mi teléfono celular, un LG MG201D no tiene ninguna aplicación libre que pueda interactuar con el bajo Linux y Windows. La única aplicación que soporta el protocolo de este teléfono es LG Mobile Agent, que viene con el CD de instalación del celular y dicho sea de paso es propietaria.

Si yo deseo usar mi teléfono bajo Linux de una manera libre no puedo hacerlo ya que LG no ha liberado las especificaciones del protocolo que habla la PC y el teléfono. Así que dadas esas circunstancias decidí emprender algo que jamás había hecho… la Ingeniería Inversa.

Tras leer el manual de mi celular, descubro que el cable original no es un cable USB, sino un cable con conexión al puerto serial. Entonces puedo pensar que el cable USB que viene con el teléfono es en realidad un puerto serial virtual, vía un driver. En efecto, era así siendo el responsable el chip PL-2303 de la Empresa Prolific lo que “convertía” mi cable USB en un puerto serial.

Estaba claro entonces que LG Mobile Agent manejaba información enviada por un puerto serial y no por uno USB. (Ya que el protocolo de USB es más complicado). Con eso en mente decidí buscar un sniffer de puerto serial. Tras una búsqueda en Google encontré PortMon, un sniffer de puertos paralelos y seriales para Windows, que aunque no es libre, es suficiente para mis propósitos.

Bueno, tras configurarlo como se debe (Hay que leer el archivo de ayuda que trae), lo puse a escuchar a mi puerto COM3 que era el puerto virtual creado por el driver del cable USB.

Con esto en mente, abrí el LG Mobile Agent y realizé algunas tareas triviales como ver fotos y demás. Luego lo cerré y fui al PortMon y encontré toneladas de información escrita al puerto serial. Entonces aquí empieza la Ingeniería Inversa, al verlas todas y tratar de deducir que es lo que hacen, tomando como ordenada la secuencia de pasos.

En última instancia para probar mis inferencias se debe escribir en el puerto serial para ver si los comandos dan las respuestas esperadas. Para ese fin usé PuTTY, un emulador de puerto serial libre que tiene la capacidad de hablar con un módem por puerto serial. Usé esa funcionalidad para hablar con el teléfono celular.

No voy a describir todo el proceso ya que me faltaría espacio para anotarlo, sin embargo 4 horas después de iniciada la tarea, obtuve un .doc con una descripción parcial del protocolo.

Protocolo LG201D

Este .doc todavía no es completo ya que faltan cosas como subir aplicaciones Java al celular, bajar fotografías, etc. Sin embargo lo básico del protocolo está en ese .doc.

Para los interesados en crear software libre que maneje al LG MG201D, la especificación que estoy revirtiendo, está liberada bajo la Licencia Creative Commons 2.5 Atribución o la GFDL (GNU Free Documentation License).

Próximamente actualizaré el post con más detalles del protocolo a medida que lo vaya descifrando.

Wikipedia vs Kalipedia

December 14, 2007

Leo en Barrapunto que el Periódico El País de España, presenta una nota tendenciosa contra la Fundación Wikimedia, al contratar como jefa de operaciones a una mujer buscada por la justicia estaudonidense.

La nota en si misma es tendenciosa ya que no podemos a base del actuar de una persona generalizar a toda la Fundación Wikimedia, en este caso. Aclaremos, para el que no sepa, que la Fundación Wikimedia es la encargada de la organización dentro de la Wikipedia.

Lo que resulta preocupante es la cantidad de ataques sin sentido que han ido surgiendo hacia la Wikipedia, como el escándalo de una lista de correo privada dentro de Wikipedia con propósitos administrativos. Mucho se dijo de esta lista, haciendo el uso de ridículas teorías de conspiración.

Siendo la Wikipedia una importante ayuda al no entender ciertos conceptos, pienso que no se le debe atacar tan fácilmente y sin presentar sólidos argumentos. En el caso de la lista de correo, el revuelo fue circunstancial, pero en el caso de El País la inexactitud y lo tendencioso del artículo saltan a la vista.

¿Y porqué El País se dedica a difamar a la Fundación Wikimedia? Según los comentarios de Barrapunto, por dos razones:

La primera es que los periodistas no están acostumbrados a ver como un modelo de edición de contenidos como el Wiki, triunfa sin necesidad de tanta burocracia y revisiones. Según los comentaristas, los medios sólo reducen a los usuarios de Internet, a los simples trolls que se dedican a vandalizar todo artículo que encuentran.

La segunda es que al ser El País propiedad del grupo PRISA y esta a su vez, propiedad de Ediciones Santillana que se dedica a la venta de material educativo, hace pensar que se deba a un conflicto de intereses. Y esta hipótesis parece confirmarse al existir la Kalipedia, una enciclopedia on-line del Grupo Santillana cuya página de información afirma lo siguiente:

Kalipedia es una iniciativa de Grupo Santillana, cuyo objetivo es dar una respuesta eficiente a las diferentes necesidades y metodologías educativas actuales, ofreciendo a la comunidad educativa una enciclopedia temática digital actualizada, rigurosa y pedagógicamente fiable.

Al verse respaldada por el Grupo Santillana (Un consorcio editorial muy conocido en el Perú), la Kalipedia (Cuyo nombre pareciera ser una mezcla de Calidad + Enciclopedia) debería tener un contenido más confiable que la Wikipedia, que reconoce en sus políticas que no es fuente primaria.

Sin embargo, la realidad es otra. En la Kalipedia hay un artículo donde se muestra como calcular los máximos y mínimos de una función. El artículo indica:

Una función f(x) tiene en x = a un máximo cuando a su izquierda la función es creciente y a su derecha decreciente. Y tiene un mínimo, si a su izquierda la función es decreciente y a su derecha creciente.

Pero la realidad es otra. Según lo que aprendí en Matemática II, esto sólo es válido si la función es continua y derivable, cosa que no especifica en ningún momento la Kalipedia y que debería tener ese rigor al ser del Grupo Santillana.

El artículo de la Wikipedia para el cálculo de Extremos de una Función (Máximo y mínimo), es más exacto al afirmar:

Dada una función f(x) suficientemente derivable , definida en un intervalo abierto de , el procedimiento para hallar los extremos de esta función es muy sencillo:

- Se halla la primera derivada de f(x) -> f’(x)
- Se halla la segunda derivada de f(x) -> f'’(x)
- Se iguala la primera derivada a 0: f’(x) = 0
- Se despeja la variable independiente y se obtienen todos los valores posibles de la misma:.
- Se halla la imagen de cada sustituyendo la variable dependiente en la función.
- Ahora, en la segunda derivada, se sustituye cada xi:
- Si f(xi) < 0, se tiene un máximo en el punto M(xi, f(xi)).
- Si f(xi) > 0, se tiene un mínimo en el punto m(xi, f(xi)). .
- Si f(xi) = 0, debemos sustituir xi en las sucesivas derivadas hasta sea distinto de cero.

Cuando se halle la derivada para la que xi no sea nulo, hay que ver qué derivada es:
- Si la derivada es impar, se trata de un punto de inflexión, pero no de un extremo.
- Si la derivada es par, se trata de un extremo local; un máximo si f(xi) < 0 y un mínimo si f(xi) > 0.

Según los comentarios de Barrapunto, aún esta parte tiene fallas ya que la forma indicada por la Wikipedia sólo sirve para funciones con dominio en los Reales. (R). Personalmente no considero a la Wikipedia en cuestiones de matemáticas y si la considero uso la Wikipedia Inglesa. En caso de dudas sería preferible consultar un libro de cálculo y si alguien sabe más del tema, que nos lo comente o que edite el artículo de la Wikipedia para mejorarla.

El punto aquí es que una Enciclopedia mantenida por la comunidad tiene un mayor desempeño que una enciclopedia mantenida por el Grupo Santillana, lo cual es lamentable ya que son las editoriales las que más se dedican a criticar a la Wikipedia por “amenazar su sistema de negocio”. Y en lo personal considero que los libros Santillana son caros así que teniendo la Wikipedia… ¿Pará que querer libros caros y enciclopedias inexactas como la Kalipedia?. Creo que Santillana debe dedicar más tiempo a corregir sus propios errores en lugar de ir enlazando cosas que no tienen nada que ver la una con la otra. La Fundación Wikimedia no controla la Wikipedia, simplemente la administra.

Teniendo estos hechos ya sabes en quien confiar la próxima vez cuando busques información. En lo particular seguiré apoyando y consultando a…


Wikipedia, la Enciclopedia Libre

Aunque le ocurran cosas como empezar a ser bloqueda en algunos centros de EE.UU. Se nota que la Wikipedia es un dolor de cabeza para “ciertos” grupos sociales.

Lista de Regalos para Navidad

December 10, 2007

Ya falta muy poco para la Navidad. Una fiesta que por un lado reune familias y alegra a las personas y que por otro lado… alienta a un consumismo agresivo donde los más perjudicados suelen ser los caídos emocionalmente o las personas que trabajan en condiciones deplorables. Como todo en este mundo, la Navidad tiene tanto cosas buenas como cosas malas.

Dejando aparte temas tan escabrosos… me gustaría publicar, por estar en vísperas de navidades, la lista de cosas que me gustaría recibir por Navidades:

  • Un PIC 16F877: Un poco de electrónica estaría bien este verano…
  • Un Reproductor MP3: Hay tantas canciones JPop que quisiera escuchar fuera de la PC…
  • Un USB-Bluetooth: Para tener un punto Bluetooth y molestar a los celulares vecinos…
  • Un quemador de DVD: Tantas series Anime que me gustaría quemar…
  • Algún gadget de ThinkGeek.com: Son muy divertidos a veces…
  • Una OLPC: Sé que no se venden a particulares… pero siempre he querido trastear en una…
  • Una Impresora: Parece que la mía no está funcionando muy bien últimamente…

Y bien… como decía esto es una lista de deseos. Sé que es posible que no tenga ninguno de los que pido… pero en fin… soñar no cuesta nada.

Feliz Navidad.

Concurso de Google para no Universitarios

December 3, 2007

Son muchas las personas que creen que por estudiar Ingeniería de Sistemas o alguna carrera afin a la informática en alguna universidad se pueden llamar así mismos ‘Ingenieros’ y creerse que son más que los demás. Que equivocados están…

Visitando la página web del Proyecto GNOME me entero de que Google ha anunciado su nuevo concurso: Google Highly Open Participation Contest (Concurso de Alta y Abierta Participación, en inglés), un concurso destinado a estudiantes mayores de 13 años que no hayan llevado estudios universitarios.

¿Mayores de 13 años sin estudios universitarios? Así es. Aunque suene doloroso para los fans de las Ingenierías, Google sabe que hay gente que sabe mucho más que cualquiera que sale de una Universidad. Esto no debería sorprendernos ya que en muchos países hay programadores y no programadores que han mostrado sus destrezas en el Software Libre, un ejemplo claro de ello fue el Anestesista que desarrolló un Nuevo Planificador para el Kernel Linux. (Y en mi Universidad solo tenemos gente que ’simula’ planificadores en Visual Basic).

No es de sorprendernos que existan países donde la educación sea una prioridad o esté mayor atendida por los gobiernos. Como decía un columnista del Diario La Industria “La Educación no da votos” y es por eso que no se invierten recursos en ella por las autoridades.

El concurso es muy similar al Google Summer of Code, en el cual estudiantes Universitarios se encargan de desarrollar para proyectos de Software Libre. (El Google Summer of Code se desarrolla en Julio de cada año).

En el Google Highly Open Participation Contest están proyectos de Software libre de la talla de:

  • Apache Software Foundation (Apache en general)
  • Drupal
  • GNOME
  • Joomla!
  • MoinMoin
  • Mono
  • Moodle
  • Plone
  • Python
  • SilverStripe

Para los que no lo sepan, Apache es uno de los servidores web más usados a nivel mundial, Drupal es un CMS (Content Manager System), es decir un sistema de administración de un portal web, GNOME es el escritorio desarrollado por la Fundación GNOME y eterno rival de KDE, Joomla! es otro CMS, el más famoso si se puede decir el término, MoinMoin es un Wiki parecido a Mediawiki, Mono es un proyecto de Novell para llevar .NET a Linux y otros sistemas similares, Moodle es un CMS pero destinado a educación, parecido a las Aulas Virtuales, Plone es también un CMS como Joomla! o Drupal, Python es un lenguaje de programación muy versátil y SilverStripe, es otro CMS como los ya mencionados.

Esto da una idea de la seriedad de los proyectos que se incluyen en este concurso, proyectos serios y maduros lo que hará que los concursantes tengan que dedicar muchos esfuerzos para poder ganar el certamen.

Obviamente no todo en este concurso es código, ya que por ejemplo Python está pidiendo gente para documentar y traducir los tutoriales y guías, Mono está pidiendo tutoriales para Cairo y portar tutoriales de GDB a los depuradores de Mono. También están los retos fuertes como el estudiante que reclamó para sí la tarea de hacer que el intérprete Mono consuma menos memoria.

El 11 de Febrero Google debería estar publicando los resultados de los ganadores del concurso. Esperemos que nuevos hackers y colaboradores para el Software Libre aparescan gracias a este certamen.

Bug en la implementación de ext2, ext3 y ext4

December 2, 2007

Como todo software diseñado por las personas, el Software libre tampoco se escapa de las vulnerabilidades, o de las características que pueden ser convertidas en vulnerabilidades. Estas son las llamadas features.

Vía eyeIdeas, me entero de la existencia de un error en la implementación de ext2, ext3 y el nuevo ext4 que puede colgar sistemas *nix que usen estos sistemas de archivos.

(Ya que no somos lammers no iremos directamente a la vulnerabilidad en sí misma, sino que primero describiremos en que se basa)

Según el blog, en la Universidad de Eindhoven se lleva un curso llamado “Linux Kernel and Hackers hut” (Kernel Linux y choza de Hackers) dictada por Andrie E. Brouwer, un hacker del Kernel Linux.

(Para los que no sepan, un Hacker del Kernel Linux es una persona que lejos de reventar el Kernel con exploits, se encarga de programar el Kernel y tiene un conocimiento profundo de su funcionamiento).

Este hacker explicaba en sus clases que el sistema de archivos ext2, ext3 y ext4 poseen un bit que si está activado, indica al sistema operativo que debe lanzar un Kernel Panic y detenerse. Es decir, si se lee un sistema de archivos defectuoso debe detenerse a todo el sistema.

Andrie alertó en el 2005 sobre los posibles peligros que esta característica, incluída posiblemente para no dañar sistemas de archivos, podía causar. Sin embargo no se le prestó mucha atención ya que entornos *nix, sólo el root puede montar un sistema de archivos.

Sin embargo, muchas distribuciones Linux como por ejemplo Ubuntu, Fedora, Open SuSe, Mandriva, Debian y demás, usan un sistema de automontaje que monta automáticamente (Por medio de /etc/fstab o algún software) los dispositivos cuando son conectados.

Debido a que el montaje sólo puede ser usado por root, estos sistemas de automontaje actúan con privilegios de root, por lo que se abre una puerta a un atacante para que monte un sistema de archivos defectuoso y provoque la caída de un sistema basado en *nix o que soporte los sistemas de archivos vulnerables.

Para probar si esta vulnerabilidad nos afecta, debemos ejecutar los siguientes comandos. (Suponiendo que tenemos un sistema de archivos de prueba).

(Nota: No me hago responsable por lo que pueda pasar. No debe usarse el comando en entornos de producción).

tune2fs -e panic [Imagen/Dispositivo]

Ya tenemos el bit de Panic activo. Ahora solo queda montarlo con…

mount [Imagen/Dispositivo]

Para ver un Kernel Panic. Si nos arrepentimos, podemos desactivarlo mediante…

tune2fs -e continue [Imagen/Dispositivo]

Esto permitiría llevar una USB especialmente preparada para ir colgando los sistemas *nix que tengamos a nuestro paso. Si tenemos un Sistema de Archivos en Red, también podría activarse el bit fatal y hacer colgar a las PC que se conecten al mismo.

Para los preocupados, se puede decir que pmount (Un programa para montar dispositivos desde un usuario normal) a partir de su versión 0.9.13-4 ya no reconoce el bit fatal para tranquilidad de los usuarios. Sin embargo no todas las distribuciones usan pmount. Ubuntu no la usa así que depende de Cannonical y de la comunidad encontrar una solución a tan apremiante problema.

Una nota para los que crean que con esta información podrán ‘colgar’ un sistema Linux así de fácil. Para explotar el bug deben tener acceso físico a la PC en cuestión, para poder cambiar el bit y montar o para insertar la USB con el bit fatal. Es decir, este artículo ni la vulnerabilidad servirán para que algún script kiddie se haga un script y pueda alardear de colgar sistemas *nix.

Esperemos que las distribuciones que no usen pmount puedan pronto solucionar el problema, por ejemplo haciendo ignorar ese bit.