viernes, 29 de febrero de 2008

Jugando con una XO

Un cliente me pidió que investigara la posibilidad de desarrollar un porte para el XO-1 de una aplicación que le estoy haciendo. Para poder investigar, le expliqué que debía poder acceder a una de esas adorables máquinas y ver si era posible ejecutar el sistema en ella.

La cosa es que la semana pasada me hizo llegar una, lo cual me dió la oportunidad de jugar un poco con esta maravilla de la ingeniería.

Por dentro, la XO tiene la misma simplicidad que se puede ver por fuera. Desarmarla es extremadamente simple y no requiere manuales especiales. Tan solo se necesita un destornillador Phillips Nº 1 y algo de paciencia.

El software... bueno, ni que hablar. Linux (con un kernel 2.6.22, parte del core de Fedora), con una interfaz gráfica simple y especialmente diseñada para ser fácil de usar. Bueno, a mi se me complicó un poco, pero claro, supongo que por estar acostumbrado a "otra cosa", sin contar con que nunca me acostumbré a los touchpads ni a los teclados de goma (al mejor estilo TK-90).

Lo que más me llamó la atención, es que trae algo llamado Pippy, un simple y potente editor de Python (que parece no tener nada que ver con el Pippy para PalmOS, a pesar de las similitudes), lo cual me provocó una extraña sensación, mezcla de esperanza y de añoranza. ¿Será que Python es el nuevo Basic para las generaciones futuras? Creo que estoy grátamente sorprendido por ello, ya que Python es un lenguaje mucho más serio, y más sintáctica y semánticamente apropiado que el Basic. Es un verdadero lenguaje de programación del cual enriquecerse mediante su aprendizaje.

También viene algo llamado Turtle Art, que viene a ser algo así como un "Visual Logo", o sea, una versión limitada de Logo, diseñada para ser utilizada en base a elementos visuales que representan estructuras de control de flujo, operaciones y elementos varios, evitando que el niño tenga que aprenderse aquellos comandos que tanto nos gustaban. Calculo que Turtle Art es para los más chiquitos y Pippy para los más grandes, aunque por supuesto que hay que decirles que lo que aprendan de Python les va a servir realmente para el futuro, en caso de seguir adelante en la informática.

Lamentablemente para mi, la XO que nos prestaron tenía clave asignada al usuario root. Normalmente, las XO vienen sin clave de root, así que con un simple "su root", se resuelve el problema, pero en este caso en particular, la máquina venía ya "manipulada" y no podía hacer nada más que probar la lista de contraseñas obvias (las cuales evidentemente no funcionaron). Esto representaba un problema, dado que no podía acceder a las funciones del administrador ni a experimentar con las herramientas que necesitaba instalarle. Me comuniqué con el cliente para pedirle los datos de acceso, pero luego de él haber intentado infructuosamente averiguar con los amables donantes del préstamo del equipo, quedamos relegados a meros usuarios.

Pedí autorización al cliente para hacer algo de investigación en busca de una solución alternativa, y bueno, luego de comunicarle las opciones y recibir una "luz verde" para proceder, tuve que acudir al "lado oscuro de la fuerza" para lograr el objetivo.

Resulta que el kernel de las XO que viene en la versión 642 de la imagen de disco grabada en la NAND (casualmente la que venía en la XO que nos prestaron) es vulnerable a varios tipos de ataque a algunas funciones de fs/splice.c (ver CVE-2008-0009, CVE-2008-0010 y CVE-2008-0600), así que algún tiempo después pude obtener un shell como root (que conste que fué con el propósito puro de investigación y desarrollo, y pienso devolver el equipo tal cual me lo hicieron llegar).


Habiendome sacado el gusto de probarla a fondo y de mostrársela incluso a mi hija para que viera lo que le espera si se porta bien (en realidad, ya le prometí mi vieja Toshiba Tecra...), puedo decir que me queda un sabor extraño en la boca al respecto de toda esta cuestión de las XO en Uruguay. Creo que tenemos que resolver muchas cosas más básicas antes que darles computadoras a los niños, como por ejemplo, poder vestirlos y alimentarlos adecuadamente, para que crezcan con el ánimo necesario como para poder poner energías en aprender Python, navegar en Internet y aprender a hackear estos aparatitos. También deberíamos resolver los problemas locativos e higiénicos de muchas escuelas, el problema de los sueldos de los maestros, la adecuada capacitación de los mismos para afrontar el reto que representa cambiar los cuadernos por computadoras, y un sinfín de otros detalles que ahora se me escapan, pero que los implicados conocen muy bien.

No quiero decir que estoy en contra, solo que creo que las prioridades no están bien definidas en nuestro país y creo que sería mejor relegar este asunto de las XO para una época donde el desempleo no exista y la educación de los hijos excluya el maltrato y la enseñanza de técnicas de arrebato y violencia, como se vé normalmente en algunos barrios difíciles, donde se educa a los niños como herramientas para robar (esto no me lo contaron, lo he visto, así que pobre del que se atreva a decirme que no es cierto).

También me pregunto si realmente va a haber mejores oportunidades laborales a futuro para esos niños que hoy reciben esas XO, tomando en cuenta también que las exigencias de educación incluso para ir a trabajar de limpiadora o lavaplatos son ridículas. ¿Es necesario que tengan el liceo terminado para ir a lavar un piso? ¿Necesitan inglés o computación para ir a limpiar mesas y vasos? ¿No aumentarán las exigencias educativas a los futuros trabajadores de labores manuales, aumentando también la brecha que ya hay entre los educados y los no educados (hablamos de niños que ni siquiera van a la escuela) y entre los trabajadores y los desempleados? Cabe preguntarse muchas cosas, pero talvés no es este el momento, y talvés no soy yo quien debería planteárselas.

De todas maneras, me hubiera gustado haber nacido en el nuevo milenio, y así me haría acreedor a una de estas máquinas en mis primeros años de educación, algo que en realidad no me pasó y que lamento. Talvés de eso se trate realmente todo esto, de alimentar la mente de los niños con nuevas esperanzas y nuevos retos, haciéndoles olvidar lo que les hace falta e incentivándolos a aprender a pesar de las dificultades. Como dije antes, seguramente no soy yo quien debería estar haciendo cuestionamientos, por más fácil que sea hablar y emitir juicios al respecto.

Recuerdo que mi primera máquina la compré trabajando con mi padre, y la pagué en cómodas cuotas mensuales que representaban practicamente todo mi sueldo en esa época. Hoy, si tenés más de 6 años y vas a la escuela, seguramente tengas la suerte de que te toque una XO. ¿Qué más se puede pedir?

También un particular puede hacerse de una de estas máquinas mediante el proyecto Give 1 Get 1, una de las joyas del marketing de estos últimos tiempos (no creo que Bill haya hecho su contribución al proyecto, ni siquiera cuando se sintió mejor en sus ánimos filantrópicos...). El usuario compra dos XO, recibe una y la otra la dona en forma automática. ¿No es brillante acaso?

Solo me resta felicitar a los implicados en la implementación de la idea de Negroponte (a pesar de los problemas que plagan el proyecto y todas las implicaciones a nivel social y de seguridad que existen) y esperar a ver qué sale de todo esto en nuestro país.

EOF!

6 comentarios:

Fernando 6.0 dijo...

Hola no es un comentario, pero no encontre tu correo y pongo aca.
le queria esplicar a mi hija como apagar la maquina con shutdown y pide root despues le quice mostrar como ir cambiando los colores del pong con pitoncito y no me deja guardar los cambios.
No se casi nada de linux pero me gustaria enseñarle lo poco que se yo empese con un tk 90 y el programa de los ladrillos y lo converti en casi un arcanoi me gustaria que ella pudiera hacer igual pero el no poder guardar te desanima.
gracias
Norberto Maidana(nmlgap@adinet.com.uy)

Gustavo Castro Puig dijo...

Norberto:

Las XO vienen configuradas para que no puedas acceder al usuario root del sistema, así que no deberías poder ejecutar comandos en la CLI que requieren privilegios de root.
Si le asignaste una contraseña al usuario del equipo, creo que es factible ejecutar esto:

sudo /sbin/shutdown -h "now"

y cuando te pide la clave, ingresarle la de tu usuario, pero no estoy seguro de que funcione, dado que no tengo una XO a mano para seguir probando (la devolví hace meses).
Los programas ya creados en el sistema seguramente vengan asociados al usuario root, así que para modificarlos tendrías que tener permisos de escritura sobre los mismos. Te recomiendo copiar el pong original al directorio de trabajo de tu usuario y modificar esa copia solamente.
Como te dije antes, es posible que no se pueda hacer, ya que las XO que se reparten acá no se distribuyen con acceso root (lo cual evita que se hagan otras cosas "interesantes" con esos equipos), pero si te interesa hackear una XO, deberías conseguirte una comprada mediante el método "Give 1 Get 1", aunque probablemente sea más razonable descargar una imagen y ejecutarla en un entorno emulado (http://wiki.sugarlabs.org/go/Sugar_on_a_Stick) y después ver si podés modificar la XO de tu hija...
Espero que esto te sirva.

Saludos,
Gustavo

Sgo. Glez. dijo...

eckseBrillante!
(y entre con una xo 1.5)
Por el momento este instrumento no me sirve de mucho para lo que lo quiero usar, pero algo es algo.
He aprendido un poco de codigo XHTML, diseño web, blogs.
(he Hackeado este aparatito con algunas cositas)
Ahunque esto no me arregla las faltas de ortografia que tengo, ha ocupado horas de ocio, y aburrimiento (cuando la biblioteca esta cerrrada y faltan los profes, sigo diseñando mi blog).

Yo he logrado el usuario root de otra manera.
Borras y buelves a instalar el sistema.
Entras a la terminal, ejecutas
chmod / 777
Y luego ejecutas
touch /.unconfigured.
La prendes presionando el boton derecho del pad.
Te pide escribir pasword (2 veses)
Luego desactivas las 2 primeras opciones que aparesen a la derecha.
Le damos save and quit y listo.
Root y las antenas de ceibal no cambian tu contraseña.

Pienso ser un futuro hacker (de primera) y programador.

Gustavo Castro Puig dijo...

Kuito132,

Toma en cuenta que este post tiene 4 años... y en aquel momento la XO que usé no era mía y no tenía "autorización" para hacerle modificaciones. Lo que hice en su momento tenía como propósito acceder al sistema operativo como root, hacer pruebas, limpiarla y devolverla tal cual me la habían entregado, y eso es exactamente lo que hice.

Por cierto, me llama la atención que la XO te permita ejecutar el chmod sobre el directorio raiz del sistema. Técnicamente sería un fallo de seguridad extremadamente grave, ya que estarías modificando los permisos del directorio principal siendo un mero usuario, y si llegaste a ese punto, significaría que no había nada que te detuviera para modificar los archivos contenidos en el /etc (como ser el shadow, por ejemplo) originalmente... con lo cual el resto de esa técnica ni siquiera es necesaria para obtener root. Con simplemente editar el /etc/shadow se puede limpiar el campo correspondiente a la password e ingresarle otra sin problemas.

Por otro lado, la sintáxis correcta del comando chmod es:

chmod <permisos> <archivos>

Así que en todo caso sería:

chmod 777 /

Con lo cual el directorio raíz podría ser leído y escrito por cualquier usuario del sistema (rompiendo el esquema de seguridad que supuestamente provée el filesystem).

No tengo a mano una XO ahora para probar, pero puedo acceder a una en estos días y probar esa técnica, o talvéz pruebe con la imagen actual del Sugar (asumiendo que todavía se usa), solo para satisfacer mi curiosidad y poder confirmar la técnica.

Espero que tengas éxito con tus emprendimientos, y te dejo con algo muy importante sobre el "hacking": Hay mucha gente que cree que es "cool" ser "hacker", porque vieron una película que habla sobre ellos o porque se supone que pueden acceder remotamente a servidores de forma furtiva, o talvéz porque son personajes famosos en el mundo de la informática, aunque generalmente pocos tienen idea de lo que significa realmente ser un hacker.

Si realmente quieres convertirte en uno, lée este documento: Cómo convertirse en un hacker. Luego, si todavía crees que esa es tu vocación, puedo guiarte y darte consejos sobre qué estudiar y a quien preguntarle.

¡Suerte! :-)

Gustavo

Sgo. Glez. dijo...

Jejeje, el error fue mio, de escritura, estaba apurado, es como tu dises

chmod 777 /

esta definicion estaria muy bien apara mi, no quiero ser un asesino de paginas.

afición a lo técnico y en el placer de resolver problemas sobrepasando los límites

Y claro, que despues te aplaudan (no, solo bromeo)

No me he fijado en la fecha de la entrada, pero ahunque sea de hace un siglo la respondes rapido.
Me interesa tu blog, ya estoy subscripto.
Nunca es tarde para nada!
PD: leyendo...

Gustavo Castro Puig dijo...

Kuito132:

¡Bienvenido entonces! :-)

Saludos,
Gustavo

 
Gustavo Castro

Crea tu insignia