Dennis Ritchie, descanse en Paz

Elvis se murió tres días antes que Groucho, eclipsando así la muerte de uno de los mejores cómicos de la historia. A Eric Carr le coincidió morirse el mismo día que Freddy Mercury y la prensa rockera apenas se hizo eco del fallecimiento del batería más querido de los Kiss. Y Umbral no consiguió que se hablara de su libro incluso muriéndose, pues lo hizo el mismo día que un joven futbolista.

La historia está plagada de muertes de personajes mediáticos que eclipsan en la prensa las muertes de otros que, en muchos casos, han aportado bastante más a nuestra cultura pero que no logran ese reconocimiento. Es el caso de Dennis Ritchie, uno de los más grandes genios de la informática que murió siete días después de que lo hiciera Steve Jobs.

La importancia de Ritchie está en haber sido el creador del lenguaje de programación C a principios de los años 70. Este lenguaje, todavía usado a día de hoy y además estandarizado (ANSI-C), tenía como gran característica el moverse entre los lenguajes de alto nivel y los de bajo nivel (por lo que ha sido denominado muchas veces como un lenguaje de «medio nivel»). Además trabajó en el sistema operativo MULTICS y fue uno de los padres de UNIX. Puede que esto a una persona que no sepa de informática le suene a chino, así que lo podría resumir diciendo que es uno de los padres de la informática moderna y que su trabajo, además de seguir teniendo vigencia pasadas cuatro décadas (en un mundo tan cambiante como la informática) está presente de forma directa o indirecta en prácticamente todos los ordenadores del mundo. Además, el libro «El lenguaje de Programación C«, que coescribió en 1978 junto a Brian Kernighan, fue una obra pionera dentro de los manuales de informática, por su lenguaje conciso y ejemplos prácticos. El ejemplo del programa «Hello World» (simplemente imprimir en pantalla esa frase)  es uno de los más utilizados y populares de la historia de la informática.

A mi todo este tema me lleva a una reflexión sobre por qué el mundo está como está. Se muere Jobs, un empresario multimillonario que maximizaba beneficios con prácticas como llevar sus fábricas a China (donde los obreros apenas gozan de derechos y de buenas condiciones laborales), permitir y favorecer la creación de sistemas DRM (no olvidemos, además, que mr Jobs era el accionista mayoritario de Disney con un 7%) o fabricar productos «con fecha de caducidad» (véase Obsolescencia Programada), y lloran millones, abre telediarios, es portada en la prensa, internet se llena de homenajes, no hay más que babosos diciendo chorradas, como Spielberg soltando que «es el mayor inventor desde Thomas Edison» (ole tus huevos, Steven), y cabezamanzanas que dicen que el tío inventó el ordenador personal (el 8800 para esta gente debía ser una calculadora muy grande, supongo) o la tablet (¿Microsoft Tablet PC?, tampoco debe existir…). Bueno, no dicen que inventó el teléfono móvil y el reproductor de Mp3 de casualidad. Se muere Ritchie, un estudioso de la informática, una piedra angular de la programación y los sistemas operativos, una persona que ha sido para esta ciencia lo que Jimi Hendrix ha sido para la guitarra eléctrica, Konstantín Stanislavski a la interpretación o casi incluso Gutemberg para la difusión de la cultura escrita (bueno, estoy igual es un pelín exagerado pero… bueno, tampoco lo es tanto si lo piensas profundamente) y se hacen eco varios días más tarde en cuatro medios, con unas pocas líneas que casi parece que se haya muerto la señora de la limpieza del MIT… ¿Y nos extraña que estemos sumidos en una crisis? ¿Nos parece raro que el grueso de la población mundial en el último año se haya empobrecido un 10% mientras que los 500 hombres más ricos del mundo se han enriquecido un 14? Para poder hacer un cambio a mejor habría que empezar a pensar en a quiénes elegimos como ejemplos.

Dennis Ritchie, físico, matemático, pionero de los sistemas operativos modernos, padre de C y UNIX, figura clave en la difusión de la informática y en el desarrollo de la informática moderna; descansa en paz y vive por siempre, a través de tu trabajo y en el recuerdo de todos los informáticos que nos hemos servido de tu trabajo.

Compilar el Kernel en linux (kernels versión 2.6)

Esta entrada huele a langostinos. Sí, a langostinos, a pescado al horno, a carne asada… Cuando empecé el ciclo, el primer año, el horario era de tarde, desde las cuatro hasta las once. La asignatura de sistemas operativos y redes la teníamos en las últimas horas, a partir de las nueve y viente. Y el tema del kernel lo vimos allá por primavera, así que ya hacía un relativo calorcillo. El caso es que este calor nos obligaba a tener abiertas las ventanas, y a esas horas llegaba el olor de las cenas que se preparaban en los restaurantes que hay detrás del instituto, inundando un aula de alumnos con el estómago vacío a esas últimas horas. De ahí que mi amigo Brais dijera siempre “no huele a comida, huele a Kernel”, por lo que sí, el kernel huele a langostinos.

Ahora nos centraremos en las versiones 2.6.x (siendo x el número de revisión de dicho kernel), que es con las que más he trabajado (bueno, con las 2.4 también, tal vez le dedique una entrada más adelante), a falta de ponerme algún día a cacharrear con las 3.0 (la última versión estable creo que es la 3.0.4 aparecida este verano). Lo primero es conseguir una versión del kernel, cosa que podéis hacer en la página www.kernel.org, que tiene además mirrors para varios países. Aquí podéis encontrar siempre la última versión, claro que debéis tener en cuenta que muchas veces esta puede ser una versión inestable. Por otra parte en muchos casos también puede ser interesante ir a la página del creador de nuestra distribución (Debian, Ubuntu, Red Hat…) para buscar allí el paquete del kernel, porque puede venir con modificaciones específicas para nuestra distribución.

Una vez descargado el kernel en el directorio que vamos a utilizar para la compilación, tras desempaquetarlo y tras comprobar las versiones necesarias de las utilidades básicas procedemos a la limpieza de anteriores con el siguiente comando:

 make clean mrproper

Parece un chiste, pero no. Ese es el comando que limpia rastros de anteriores compilaciones (igual un día me lanzo y hago una versión que se llame Don Limpio…). Una vez limpio, nos toca la configuración de parámetros. Si disponemos de un archivo .config previo nos ahorrará empezar de cero. Para esto usamos el comando

 make menuconfig

Ahora hay que construir la imagen binaria del kernel, que requiere de estos dos comandos:

 make dep

make bzimage

Y seguimos con la construcción de los módulos y su posterior instalación (/lib/modules/version):

 make modules

make modules_install

Y finalmente (bueno, finalmente todavía no, pero casi) copiamos de la imagen a su posición final, desde la carpeta provisional que hemos utilizado (en este ejemplo la arquitectura es la i386, así que adapta la instrucción a tu caso, y acuérdate también de cambiar x por el número de tu revisión del kernel):

 cp arch/i386/boot/bzimage boot/vmlinuz-2.6.x.img

Ahora nos queda crear la imagen initrd que consideremos necesaria, con las utilidades de rigor en cada versión. Y ajustamos el bootloader lilo o grub para que arranque con este kernel, según sea el utilizado.

Los últimos pasos (vmlinuz, system.map e initrd) de movimientos de archivos a /boot se realizan normalmente con el proceso

 make install

Pero hay que tener en cuenta que esto realiza todo el proceso, y que puede alterar los enlaces por defecto a /boot o modificar los bootloaders. Es algo que tenemos que tener en cuenta a la hora de guardar configuraciones pasadas.

El initrd en Fedora/Red Hat se crea automáticamente con install. En cambio en Debian y varios de sus derivados la cosa es bien distinta, y ahí tenemos dos opciones:

  1.  Crearlo usando mkinitrd (en las versiones anteriores al kernel 2.6.12) o con mkinitramfs (en las posteriores).
  2.  Construir el kernel desde el principio al estilo “Debian Way”, a la que tal vez dedique otra entrada, aunque si tenéis mucha prisa podéis consultar el manual que hay disponible en la web oficial de Debian.

Restaurar Grub2 con una jaula chroot

A veces, trasteando con el equipo es fácil cargarnos el MBR. Si tenemos un sistema Linux con Grub 1 restaurarlo es tan fácil como usar Supergrub Disk, pero con Grub2 no hay cristo bendito que se entere de cómo va la cosa.

En todo caso con estos cómodos pasos podemos lograr recuperar el sector de arranque:

Arrancamos con un live-cd con soporte para poder montar nuestro sistema de ficheros (ext3, ext4) y a continuación poner los siguientes comandos como root:

  1. mkdir linux
  2. sudo mount /dev/sdAB linux/
  3. sudo mount -t proc /proc linux/proc
  4. sudo mount --bind /dev linux/dev
  5. sudo chroot linux/

Con esto creamos un directorio llamado linux, donde montaremos nuestro sistema que usa el grub. Montamos la particion sdAB, siendo A el disco y la B el número de nuestra partición a montar, en el directorio linux. Montamos el sistema de ficheros «proc» en nuestro directorio linux, es decir en nuestro sistema operativo a enjaular.  Montamos la estructura del directorio /dev a nuestro directorio a enjaular para poder acceder a las particiones dentro de él y nos enjaulamos con chroot en el directorio Linux.

Despues de hacer esto y si todo ha ido bien, pasamos de estar al directorio ~, ha estar al directorio /, pero no del sistema con el que hemos arrancado, si no el del sistema al que nos hemos enjaulado.

Ahora simplemente ejecutamos el último paso, reinstalar Grub2:

  • grub-install /dev/sdA

Y con esto ya está listo y podemos reiniciar el sistema con el Grub2 otra vez funcionando perfectamente.

Cambiar la Mac Adress (Windows y Linux)

MAC son las siglas, en inglés, de media access control, un identificador de 48 bits que corresponde de forma única a una tarjeta de red (para más info tenéis la wikipedia ).

Algunas veces, como medida de seguridad (o por putear) el administrador de una red puede bloquear la entrada de nuestra Mac en la red, con lo que nos puede interesar cambiarla. A priori, al ser el identificador único de un dispositivo físico, esto no debería ser posible. Pero no debemos olvidar que es la capa del sistema operativo la que maneja esta dirección a la hora de identificarse en una red, por lo que en este nivel puede ser modificada.

En Linux, y por extensión en FreeBSD y OpenBSD, esto está tirado. Podéis instalar macchanger, pero es tontería porque desde línea de comandos podemos hacerlo fácilmente. El procedimiento es echar abajo la tarjeta, cambiar la Mac y  volver a levantar la tarjeta. Los comandos concretos en Linux son:

ifconfig ethX down

ifconfig ethX hw ether XX:XX:XX:XX:XX:XX

ifconfig ethX up

Sustituyendo la X por los números pertinentes. En BSD en lugar de eth sería wlan (seguida del número de la tarjeta, wlanX vamos) y el comando para modificar no necesita lo de hw, sería ifconfig wlanX ether XX:… Teóricamente, dado que MacOs está basada en BSD, debería funcionar también, aunque ahí ya dependes de lo que los verdaderos propietarios del SO (Apple) quieran dejarte hacer con él (no he probado, la verdad, pero si sois Appleheads podéis intentarlo).

Para que el cambio sea permamente nos basta con modificar el script de inicio, que en la mayoría de distribuciones Linux (no diré en todas porque no estoy seguro, pero al menos sí coincide en todas las que he probado) es /etc/init.d/bootmisc.sh, incluyendo esos comandos, para que cada vez que se reinicie cambie la Mac (si no, al reiniciar volvería a coger el valor por defecto). Para volver a la configuración original basta con borrar las líneas del script de inicio, y si no se ha modificado ya he comentado que cambia con el reinicio.

En Windows la cosa tampoco es muy complicada, aunque ahí sí que necesitamos ayuda de software externo. Según la wikipedia se puede modificar en el Panel de Control, pero a mi, haciendo pruebas en Virtual Box, no me ha acabado de furrular la solución que dan ahí. Lo más fácil es instalar Technitium MAC Changer (hay otras opciones, pero la prueba la hice con este, que me funcionó tanto en XP, como en Server2003 y Server2008). Cuando lo lancemos veremos esta ventaña:

Ventana del programaAhí es tan simple con pulsar en el botón Change MAC. Nos aparecerá un cuadro donde insertar a mano la nueva MAC y un menú desplegable donde cambiar también el fabricante. Tras configurar lo que queramos basta con pinchar en Change Now!

Es posible que nos diga que hay que «reiniciar la red». Basta con desactivar la red y volverla a activar. Si queréis restaurar la dirección original, basta con ir a Change MAC de nuevo y pulsar Original MAC.

En fin, que ya véis que no hay que ser ingeniero para hacer estas modificaciones. Una advertencia, tened cuidado de no meter una Mac duplicada en la red, porque si no crearéis un conflicto y os quedaréis sin conexión. Ya sabéis, usadlo con sentidiño.

Cambiar la contraseña de Windows con Hiren’s 9.9

Seguramente os habéis dado cuenta de que dejáis el ordenador a reparar al servicio técnico y estos no os piden la contraseña. Básicamente es porque cambiar una contraseña de windows que se desconoce es relativamente fácil haciendo uso de la suite Hiren’s Boot CD. Si queréis saber cómo se hace, os lo explico en 8 sencillos pasos (9, si contáis el requisito de hacerse con el Hirens)

Lo primero que tenéis que hacer es haceros con una copia de Hiren’s (fácilmente descargable desde mil sitios) copiarla a un cd o un usb arrancable y arrancar el equipo desde ahí.

Para este ejemplo he utilizado el Hiren’s 9.9 (que usábamos en el San Clemente cuando di la asignatura de Sistemas):

  1. Elige «Start Boot CD»
  2. Elige «Password & Registry Tools»
  3. Elige «Active Password Changer» (hay otros cinco programas más, pero vamos a usar este en el ejemplo)
  4. Ahí elige la opción 2, que pone algo así como «Search for an MS SAM database on all disk devices» (no recuerdo si era así exactamente)
  5. Espera hasta que encuentro la base de datos, y cuando te salga el mensaje de que la ha encontrado pulsa enter.
  6. Ahora te saldrá la lista de usuarios. Elige con cual quieres entrar al sistema (obviamente lo mejor es hacerlo como administrador para tener todos los permisos).
  7. Ahora selecciona «Clear this user’s password» de la lista de opciones que te da, siguiendo las instrucciones que te aparecen en la parte de abajo de la pantalla. Cuando esté seleccionada esa opción pulsa la tecla «Y».
  8. Volverás al menú principal del programa. Selecciona Exit y luego en la consola de comandos escribe reboot para reiniciar. Retira el cd o el usb para que arranque desde disco duro y comprueba que puedes entrar como administrador sin contraseña.
Que yo sepa, esto funciona con XP, Vista y Server2008. No se si con Windows7 también funciona o si hay que utilizar alguno de los otros programas de recuperación de contraseñas, pero supongo que no habrá problema.
Y por favor, no lo uséis para cotillearle los archivos a vuestra pareja, como hizo un colega mío. Un poquito de confianza.

Viva el Doom!

No hay muchas empresas de videojuegos que liberen su software aunque haya pasado ya un tiempo desde que salió. En el caso de los juegos no creo que tengan que ser necesariamente software libre, dado que no me parece que aporten algo significativo al progreso humano tanto cultural como económico. Pero esto no quita que se agradezca que las compañías, de vez en cuando, liberen el código de sus juegos, o su motor gráfico. ID Software viene, desde hace un tiempo, haciendo esto, y gracias a la liberación de los motores de Quake (I,II y III), Wolfestein o, próximamente, de Doom III, podemos disfrutar de un buen número de shooters para Linux. De hecho el original Doom fue liberado en 1999.

Demonio araña
Arañita Arañita, yo no soy tu mosquita

A la hora de hablar de FPS, desde un punto de vista histórico, es imposible obviar la importancia de esta empresa tejana. Tal vez ID Software no sean los padres del género como tal (que nació a mediados de los 70, curiosamente muy orientados al modo multijugador como los actuales), pero sí lo son del FPS moderno y en 3D: Hovertank One, Catacombs 3D, Wofestein 3D, Herectic, Hexxen… los que fuimos jugadores en los 90 y todavía recordamos el tener que lanzar setup.bat en MS-DOS para configurar la gráfica y el sonido no podemos evitar sentir un cariño especial por esta empresa.

Pero por buenos que fueran aquellos juegos, en 1993 apareció el rey del género, el FPS que revolucionó el mundillo, el juego que devolvió la popularidad al género (perdida en los 80 frente a los beat ‘em up y los plataformas): Doom.

Me estáis jodiendo una resaca cojonuda

Estos días lo he estado recuperando, no la versión de PC sino la de Super Nintendo (explotando el zsnes), lo que me jode un pelín porque no puedo hacer la “trampa” (idkfa para tener todas las armas, armadura y munición e iddqd para activar el “modo dios”). Cierto que estos trucos le quitan la gracia del reto, pero una vez te lo has acabado “por lo legal” esto le da la gracia del “mata mata”.

Y es que el encanto de Doom está en que era un juego “en blanco y negro”. No, no tengo la gráfica mal configurada, mal pensados, sólo me refería a que en Doom no hay rehenes, no hay víctimas inocentes, no hay “fuego amigo”, en Doom todo lo que se mueve delante de tus narices es algo que va a intentar joderte, y también algo que tienes la obligación de cargarte.

Pura violencia descerebrante donde lo mejor, recordando aquella frase de Clint Eastwood, es tener “un pulso firme y mantener la calma”. Aunque el juego vaya a toda velocidad la clave está en escoger el arma adecuada y, con toda la parsimonia, ir disparando con buen criterio a los objetivos en orden de peligrosidad. Uno tras uno ir viendo caer a zombies y demonios varios como masas sanguinolentas, sin prisa, sin piedad, sin preocupación, como un lobo solitario que se recrea en su caza, y a la vez como una fiera acorralada, sintiendo el peligro a cada paso. Su alto nivel de violencia y su imaginería satánica hizo que Yahoo! Games lo incluyera en la lista de «Los 10 juegos más polémicos de la historia» y que estuviera prohibida su venta en Alemania hasta hace pocos meses (y la han permitido ahora porque consideran que es un producto cultural importante, al haber sido un juego pionero), incluso se culpó al juego de haber inspirado la Masacre de Columbine (yo he probado a jugar a Doom escuchando Mechanical Animals y Antichrist Superstar de Marilyn Manson, pero no he notado el tener más ansias asesinas de lo normal).

Y la historia hasta no era mala. Porque Doom tenía historia (al menos en el libreto de la versión para SNES venía una explicación): Encarnas a un militar rebelde en un futuro relativamente cercano (allá por el 2200), un soldado íntegro que se ganó su deportación a las lunas de Marte por agredir a un superior e ignorar la orden de disparar sobre civiles desarmados. Durante tu deportación marciana participas en el control de un experimento que trata de crear portales dimensionales entre ambas lunas. La cosa funciona hasta que repentinamente empiezan a aparecer demonios varios a través del portal. Por la radio, desde tu puesto de control, escuchas el ruido de la batalla, el crujir de huesos, el borbotear de la sangre, los gritos agónicos de tus compañeros, hasta que ya no se escuchan más que rugidos, sonidos ininteligibles e inhumanos. Ahí es cuando empieza el juego, cuando sales a jugarte la vida para huir del planeta y te encuentras con que tus antiguos compañeros ahora son zombies y que las bases están infestadas de criaturas infernales. Con un buen director al mando y unos guionistas serios la cosa podría haber acabado convirtiéndose en una digna mezcla de El Amanecer de los Muertos con Alien, pero los productores comerciales no tuvieron tanta visión y acabaron sacando adelante una aberración con The Rock como protagonista.

Doom II tenía hasta sitios donde hacer un picnic

El juego, además,  rompía el mito de “segundas partes nunca fueron buenas”; porque Doom II no sólo mejoraba en el aspecto gráfico, sino también en jugabilidad y cantidad de niveles, con una dificultad más progresiva, pero dejando intacta toda esa diversión sanguinolenta. Doom III ya me pilló en una época menos jugona y sólo lo probé en modo multijugador, y parece ser que están preparando un Doom IV.

Liberar el código permite cosas como esta

Después de Doom II llegó Quake, planteando una nueva revolución al ser el primer shooter con gráficos poligonales. Con el tiempo, y la aparición de Half Life, Unreal, Call of Duty, Counter Strike, Team Fortress… el género evolucionó en varias ramas, ya sea hacia más realismo, hacia el juego cooperativo o hacia una acción más vertiginosa y veloz. Pero una generación entera seguiría refiriéndose durante años a los FPS como juegos “tipo Doom”. Así que le robo la frase a Rajoy para adaptarla un poco: “Viva el Doom”.

Software libre en la administración y en la educación ¿por qué sí?

Una cosa que eché bastante en falta en la gente del 15M fue un apoyo más abierto al uso de Software Libre en el ámbito público. Hablo del 15M por su supuesto carácter de movimiento anticonsumista y contrario al liberalismo económico exacerbado.

No sé si la cosa ha cambiado en los últimos años, pero hasta no hace mucho en la facultad de Historia compostelana no había opción de usar Linux (o BSD u otro sistema libre) en los equipos de las aulas, y en la asignatura de Iniciación a la Informática no se utilizaba nada de software libre (de hecho se usaba hasta una demo de un gestor de bases de datos en lugar de cualquiera de las muy válidas opciones libres). En 2009 la suite ofimática instalada en todos los equipos era Microsoft Office.

A pesar de esto hasta no hace mucho España estaba a la cabeza del uso y la promoción del software libre en las instituciones, así que la cosa podría ir peor y en muchos otros países claramente va peor. Pero siempre debemos luchar porque todo mejore.

Hay muchos motivos para que el software libre se utilice en la administración, motivos objetivos:

  1. Porque casa con las filosofías de ambas ideologías mayoritarias: Sí, con ambas. Porque por una parte el software libre defiende ideas de libertad, colaboración, compartir código y evitar los excesos depredadores del capitalismo, algo que en teoría defienden los partidos supuestamente de izquierdas en este país. Pero además, usar software libre es más barato que usar software privativo, algo que encantará a la derechona liberal tan amante de pasar la motosierra al gasto público. Tanto a la izquierda como a la derecha deberían convencerles el software libre, ya sea por razones filosóficas, económicas o por ambas. Claro, luego existe la posibilidad de que algún partido lo que quiera sea deturpar dinero público para moverlo a cuentas de empresas privadas… y no digo más, que cada uno saque conclusiones leyendo el BOE.
  2. Por seguridad: La única forma de estar seguros de que sólo la administración tiene acceso a los datos que maneja, de que nadie más puede meter mano ahí, es tener un total acceso al código fuente del programa, para comprobar que no tenga «sorpresas» escondidas. Las macrocorporaciones llevan años vendiéndonos la filosofía de «seguridad por oscuridad» y asustándonos conque el software libre es más inseguro porque al ser público el código es más fácil encontrar fallos a su seguridad. Pero en esta falacia «olvidan» comentar que el no tener acceso al código les permite a ellos espiar a sus usuarios y hacer «minería de datos» (uno de los grandes negocios del siglo XXI).
  3. Por independencia: Porque usando software privativo al final son las empresas las que tienen cogido por los huevos al gobierno. El usar software libre es un primer paso para deshacerse de la presión de las corporaciones. Y además la mayoría de estos fabricanes ni siquiera son europeos sino estadounidenses, otro punto importante a valorar por cualquier gobierno de la UE.
  4. Para generar empleo localmente: Porque el mantenimiento, la adaptación y la actualización del software correrá a cargo de empresas locales, no de macrocorporaciones extranjeras donde el software lo diseña un yankee, lo programa un indio, lo revisa un sudafricano y lo vende un inglés, y ni un duro se queda en tu ciudad/pueblo/país. Lo que gastas ayudará a reducir el paro y a aumentar la recaudación.
  5. Por ética: Porque la filosofía del software libre, abierta y no depredadora, es más ética que las de las macrocorporaciones, abiertamente favorables a la maximización del beneficio económico (y muchas veces repercutiendo en contra de la calidad del producto final). El uso del software libre en la educación y en la administración, además, llevaría a largo plazo a acostumbrar a los usuarios a esta tecnología, creando una alternativa a los grandes monopolios.
Es una dura batalla el conseguir esto, pero ahora que tenemos unas elecciones cerca sería un buen momento para recordarles a los partidos políticos que deberían pensar más en los intereses del pueblo que en los de Bill Gates o Steve Jobs. Si estás de acuerdo con estas ideas difúndelas, si conoces a un diputado, a un senador, a un alcalde, al rector de tu universidad… es el momento de que le preguntes ¿qué hay del software libre?

Juegos para Linux

Bueno, esto viene a raíz de otro artículo que acabo de leer en Aerilon (a cargo del señor Gaius Baltar).  Una de las cuatro críticas que más les oigo a la gente antilinux es «no hay juegos para Linux» (en muchos casos eso lo he oído de usuarios de Apple… que manda huevos). Pues aparte de que con Wine se pueden instalar una gran cantidad de juegos de Windows en tu Linux, existen cada vez más juegos para Linux, y cada vez de más calidad (la gran mayoría pensados para multijugador).

En este enlace podéis leer el artículo original de Aerilon que, además, incluye instrucciones para la instalación. A los ahí citados yo recomendaría estos dos:

Age of Conquest III: Una viciosa adaptación del clásico RISK para linux en contexto medieavl, de esos que te enganchan cosa mala al equipo durante horas.  La suscripción anual a la versión online cuesta menos de 20 dólares y creo recordar que permite partidas de unos 50 jugadores a la vez (puede que más en las últimas versiones). Además, suelen montarse torneos bastante bien remunerados.

Warsow: Un shooter con estética de tebeo bastante curioso. Este tengo pendiente el probarlo, pero parece bastante divertido, como podéis ver en el vídeo que pongo más abajo. Podéis descargarlo en este enlace

http://www.youtube.com/watch?v=H8tQLKxLc2Q

Y para los amantes de los juegos clásicos, como yo, casi todos los emuladores que te encuentras para PC están disponibles para linux (Genesis, SCUMM, zsnes, M.A.M.E.) por lo que no hay excusa para no echar unos vicios en tu SO Libre.

Feliz día del Software Libre!!

Hoy es el día del software libre. Muchos lectores de este blog ya lo saben, pero hay mucha gente que ignora qué es el software libre. La popularización del uso de ordenadores en los últimos años (que no de la informática) ha llevado a que actualmente haya muchos usuarios a los que todo esto les suene a chino. Gente que no se preocupa de dónde viene su software, cómo se distribuye, quién se lucra… y quién puede tener acceso a sus datos más confidenciales. En cierto modo este es un artículo dedicado a mi madre (que se ha subido hace poco a esto de la informática), a la que explicaba hace un par de semanas la diferencia entre software libre y software privativo.

El software, de forma natural, es libre. Nació libre, y durante los años 60 y 70 el intercambio, la modificación y la copia de software entre usuarios era algo habitual, algo que se hacía normalmente, naturalmente. Fue a finales de los 70 cuando las empresas empezaron a poner licencias privativas  a sus productos, amparándose en el «copyright» y los mal llamados «derechos de autor», para imponer restricciones a los usuarios en el uso de su software. Y en los 80, la década de Reagan y el ultraliberalismo despiadado, la cosa se desbocó todavía más, con grandes empresas como Apple, IBM, Microsoft u Oracle (por citar algunas que a día de hoy siguen dominando el mercado) defendiendo estas políticas.

Fue por aquel entonces, en 1984, cuando nació el proyecto GNU de la mano de Richard Stallman (con quien algún ex profesor mío cabroncillo me ha comparado… xD), quien definió así el software libre:

The word «free» in our name does not refer to price; it refers to freedom. First, the freedom to copy a program and redistribute it to your neighbors, so that they can use it as well as you. Second, the freedom to change a program, so that you can control it instead of it controlling you; for this, the source code must be made available to you

Que traducido al castellano viene a afirmar que con «free» no se refieren a «gratis»  (en inglés la palabra free significa tanto gratis como libre) sino a «libre», a que el usuario ha de tener la libertad para copiar y redistribuir el software y ha de poder modificar su código. Esto se consigue aplicando las «cuatro libertades del software libre»:

  • Libertad 0: La libertad de ejecutar el programa, para cualquier propósito.
  • Libertad 1: La libertad de estudiar cómo trabaja el programa, y cambiarlo para que haga lo que usted quiera. Esto requiere tener acceso al código fuente.
  • Libertad 2: La libertad de redistribuir copias para que pueda ayudar al prójimo.
  • Libertad 3: La libertad de mejorar el programa y publicar sus mejoras, y versiones modificadas en general, para que se beneficie toda la comunidad.

Para proteger el software libre y evitar que las grandes empresas pudieran comprar proyectos libres que considerasen lucrativos para convertirlo en software propietario nació la licencia GPL. Con el tiempo han ido apareciendo diversas licencias libres (MIT, BSD, Apache, Mozilla…) creadas por distintas empresas y fundaciones, algunas compatibles con la GPL y otras no. También han nacido movimientos como el Open Source o Creative Commons, que aunque difieran en algunos puntos, están inspirados por muchas de las ideas del software libre primitivo. Con los años, incluso las grandes corporaciones han echado mano del software libre para sus productos: IBM, Dell, Oracle, Google, Nokia… incluso Apple ha utilizado software libre para su SO MacOS X (basado en BSD) y para su navegador Safari (basado en webkit).

Es cierto que el software libre no ha logrado una posición dominante en la informática a nivel usuario, donde el poder de la publicidad sigue siendo enorme y donde Microsoft se lleva casi todo el pastel (y lo que no se lleva Microsoft se lo lleva Apple, y Bill Gates tan contento que es el dueño del 4% de la compañía de la manzana), pero a nivel corporativo (y sobre todo en el campo de los servidores en internet y en el de los SGBD) el software libre cada día está más presente.

Teniendo en cuenta el uso que el usuario medio hace de su equipo a día de hoy, no puedo dejar de recomendar desde aquí el uso de Linux (o un SO BSD), dado que para los usos que este perfil de usuario suele dar a su equipo cumple perfectamente con todo y, hacedme caso, antes que tener un Windows pirateado (con todos los problemas de seguridad y estabilidad que da por la falta de actualizaciones) probad con un SO libre, os llevaréis una grata sorpresa.

 

Hacer una backdoor en tu sistema Linux

Creo que cuando se escribe algo así hay que decir que uno no se hace responsable del mal uso que pueda darse a esta información. En fin, no se si cambiaría algo si pusiera “Yo me hago totalmente responsable de vuestros actos presentes y futuros si decidís usar esta información para putear a vuestra antigua empresa o a vuestro centro de estudios”, supongo que ante un juez no colaría, la verdad. En todo caso, tal vez lo deje escrito en mi testamento por si alguien quiere probar frente a la ley (si cuando me muera, espero que dentro de muchos años, todavía se pueden meter backdoors de esta forma, que me imagino que no, es más, como Apple siga creciendo así y dando por culo con demandas de patentes igual de aquella ya ni siquiera hay software libre).

¿Qué es un Backdoor? No es una jugada de baloncesto que consiste en desmarcarte por la espalda de un rival para recibir cerca de la canasta, sino una “puerta trasera” al equipo. Si os gusta el cine de ci-fi o el de espionaje, habréis visto muchos películas donde hábiles y/o malvados hackers utilizan estas puertas traseras para acceder a equipos ajenos, todo rodeado de un misticismo y secretismo al más puro estilo SPECTRA, pero realmente no es muy difícil crear una puerta trasera en un sistema Linux. En principio sólo necesitas un equipo (con un sistema operativo Linux, aunque creo que esto debería funcionar en la mayoría de sistemas basados en UNIX) donde meterla y una cuenta de usuario (en este caso, además, que la cuenta tenga permisos de root).

¿Por qué utilizar una puerta trasera en tu equipo? Bueno, aparte de las aplicaciones malvadas expuestas en el primer párrafo (y que son pecado y, en muchos casos, delito, así que ya sabéis, no lo hagáis malos malos malosos) es una medida de seguridad por si por algún motivo alguien logra hackear tu sistema y pierdes tu contraseña de root. Simplemente con un sencillo script de pocas líneas, un archivo de contraseñas y el uso del Cron puedes hacerte una puerta trasera a tu sistema.

Lo primero que tienes que hacer es un archivo de contraseñas propio, ya sea una copia de seguridad del archivo original o un archivo distinto, pero el caso es que tenga una contraseña de root que tú conozcas. En este caso lo puedes crear en /var/spool/mail/ (puedes meterlo en cualquier sitio realmente, pero la idea es esconderlo para el hacker/administrador no lo encuentre) y ponerle un nombre que no llame la atención como .stampcfg (la idea es que parezca un archivo más de configuración secundario, no le llaméis password ni backdoor, ni cualquier cosa cantosa).

Ok, ya tenemos dentro del sistema, y bien camufladito, un archivo de contraseñas con una contraseña de root que nosotros conocemos. Lo siguiente es hacer un script tal que así, al que llamaremos .cleaning y guardaremos en /bin/usr (como ya he dicho antes, le puedes poner el nombre que quieras y guardarlo donde quieras, pero la idea es que pase desapercibido en el sistema):

#!/bin/sh

cp /etc/passwd /etc/.tmppssw

cp /var/spool/mail/.stampcfg /etc/passwd

sleep 180

mv /etc/.tmppssw /etc/passwd

 

Explicando por encima el script, lo que hace es hace una copia de del archivo de contraseñas del sistema, sobreescribir el archivo de contraseñas del sistema con el vuestro, esperar 3 minutos (sleep 180, es decir “espera 180 segundos”, y podéis poner la cantidad de segundos que creáis necesaria, pero cuanto menos mejor por aquello de no llamar la atención) y finalmente restaurar el archivo de contraseñas del sistema. De esta forma disponéis de tres minutos para entrar como root y, en caso de que no lo hagáis, borra vuestras huellas para que el administrador no lo detecte. No olvides darle permisos al script después de crearlo para que sea ejecutable.

Finalmente tenéis que hacer que el script se ejecute en un momento determinado, por lo que vamos a usar el Cron. El Cron es un demonio ‘temporal’, o sea, se encarga de hacer que el sistema ejecute la orden que tú quieras cuando tú quieras. Si pones crontab en el shell te dirá cómo introducir, eliminar y ejecutar crons. El fichero de configuración, en Ubuntu, es /var/spool/cron/crontabs/root (si trabajas con otra distro de Linux o con Solaris o BSD sólo te puedo decir que investigues si es el mismo o está en otra parte). La idea es que metas en ese archivo una línea similar a la siguiente:

30 2 * * * /bin/usr/.cleaning

Bueno, os explico un poco qué implica esto: cada tarea que metéis en Cron tiene 6 parámetros, los cinco primeros nos permiten definir la fecha en que queremos que se ejecute y el sexto es el script a ejecutar. El primer parámetro es el minuto en que queremos que se ejecute, y el segundo la hora (en este caso, hemos puesto 30 y 2, es decir, a las dos y media, pero podéis poner la hora que queráis). Los siguientes serían el día del mes(1-31), el mes del año(1-12) y el día de la semana(0-6), y al introducir un asterisco lo que decimos es que no queremos definir ninguno en concreto. De esta forma esa línea lo que dice es “ejecuta lo que hay en /bin/usr/.cleaning todos los días a las 2:30”.

Así que, si todo va bien, todos los días, entre las 2:30 y las 2:33 (ya que el script está configurado para restaurar la contraseña original), vosotros podréis acceder como root al sistema y hacer lo que queráis (la idea es recuperar el control del sistema, pero bueno, lo dejo a vuestra imaginación). No es un sistema indetectable, pero si el administrador/hacker mira la lista de tareas del crontab sólo verá que, a una hora intempestiva (pensando siempre en horario comercial/de oficina/de estudios), se ejecuta un proceso llamado .cleaning (nombre que incita a pensar que se trata de una tarea de mantenimiento simple, que limpia el sistema de archivos temporales, o basura, o algo así), y si no coincide que tenga que usar la contraseña de root durante el tiempo que esta cambia (y teniendo en cuenta la hora elegida y los pocos minutos que dura el cambio, es muy posible que no ocurra) no debería darse cuenta de que está actuando.

Ahí tenéis una puerta de atrás simple pero efectiva, así que si decidís meterla en vuestra equipo… “con sentidiño”, que no se diga que yo he incitado a usar esto para robar datos de una empresa, modificar notas en un centro de estudios o simplemente dejar sin acceso a un usuario. Y por supuesto, cuando tengáis el control del sistema de nuevo aseguráos de que no os hayan dejado otras backdoors funcionando.