Core war, un entretenimiento diferente

Lo que comenzó en 1949 como una teoría de programas capaces de replicarse a sí mismos, gracias a John von Neumann, ha evolucionado a toda una familia de programas maliciosos conocidos en su conjunto como malware. Virus, troyanos, gusanos, spyware, ransomware son algunos de los términos utilizados para describir los programas maliciosos a partir de sus características. Desde la aparición del primer virus, una verdadera carrera armamentista se ha desarrollado en el ciberespacio entre creadores de malware y de antivirus. Unos construyen defensas y los otros tratan de evadirlas, dando lugar a programas extremadamente elaborados.

Mucho se ha escrito sobre los virus de computadoras y por décadas han sido una de las principales amenazas a las computadoras debido a sus acciones dañinas. Desde niños de noveno grado comprometiendo las incipientes redes de computadoras, hasta acciones dirigidas por estados para dañar a sus rivales, la historia del malware es rica e interesante, y una de esas historias tuvo en desenlace curioso y no tan conocido.

El primer virus de computadora de tipo gusano fue desarrollado en 1971, por Bob Thomas en BBN Technologies, y se denominó Creeper. Este gusano utilizó Arpanet, el antecesor de Internet, para infestar computadoras DEC PDP-10 que utilizaban el sistema operativo TENEX. Empleaba la red para copiarse en el sistema remoto y mostrar el mensaje "I'm the creeper : catch me if you can". En aquellos años era común usar teletipos como salida para las computadoras, por lo que el mensaje del gusano no aparecería en letras verdes sobre fondo negro en una pantalla, sino que lo imprimía.

Para eliminar a Creeper, Ray Tomlinson, escribió un programa antivirus llamado Reaper. Este tiene el doble mérito de ser el primer antivirus de la historia y el segundo gusano de Arpanet, ya que para eliminar a Creeper utilizaba un comportamiento similar.

Salida de Creeper en un teletipo Model 33 ASR
Salida de Creeper en un teletipo Model 33 ASR


Esta batalla invisible y silenciosa entre Creeper y Reaper inspiró a AK Dewdney en 1984 para desarrollar un juego de computadoras llamado Core War.

En Core War dos o más programas llamados "guerreros" luchan por tomar el control de una computadora virtual. Los jugadores crean a sus guerreros utilizando una variante simplificada de lenguaje ensamblador llamado Redcode. Al comienzo de un juego, cada guerrero se carga en la memoria en una ubicación aleatoria, después de lo cual cada uno ejecuta una instrucción por turno. El objetivo del juego es hacer que los procesos de los programas opuestos finalicen (lo que sucede si ejecutan una instrucción no válida), dejando al programa victorioso en posesión exclusiva de la máquina.

Con el tiempo se han definido tres estrategias fundamentales, denominadas piedra, papel y tijeras, análogo con el famoso juego chino.

  • Papel: hace múltiples copias de sí mismo lo más rápido posible, sacrificando velocidad de ataque por perdurabilidad. Vence a piedra pero pierde frente a tijera.

  • Piedra: bombardea direcciones de memoria a ciegas intentando matar rápidamente al mayor número de enemigos. Son de pequeño tamaño y vencen a tijera pero pierde frente a papel.

  • Tijera: comprueba posiciones de memoria a intervalos hasta localizar al rival. Una vez localizado, sobreescribe su código con instrucciones que le obligan a generar nuevos procesos indefinidamente hasta quedar bloqueados. Generalmente vence a papel y pierde contra piedra.

Existen otras estrategias y muchas veces se combinan para aumentar las posibilidades de supervivencia. Un poco más recientemente se han utilizado algoritmos evolutivos para generar guerreros viables, con buenos resultados.

Con un poco de imaginación es fácil visualizar a los programas tratando de sobrevivir, atacando a sus contrarios, sintiendo dolor por cada bit eliminado, regocijándose por cada enemigo abatido. Podemos otorgarles personalidades e imaginar los pedidos de clemencia, los gritos de furia, las plegarias a su creador cuando están a punto de ser eliminados, o cualquier otra cosa.

Este juego es generalmente mencionado cuando se habla de la historia de los virus informáticos. Es fácil pensar que surgió y murió a la sombra de historias más importantes y aquí llega el hecho sorprendente: Core War aún cuenta con una comunidad de jugadores y desarrolladores que lo mantienen vivo 38 años después.

Con una simple búsqueda en Internet se pueden encontrar páginas dedicadas al juego, torneos, tutoriales y otros recursos para aquellos que lo quieran explorar. Incluso existe una página web donde es posible programar directamente nuestro "guerrero" y enviarlo a la contienda: https://www.corewar.io/. El programa pMARS es la implementación de referencia del juego y puede ser instalado directamente de los repositorios de Ubuntu y de otras distribuciones Linux, con lo que ya estamos listos para jugar Core War.

Si fue sorprendente encontrar que el juego aún se encuentra activo, lo es aún más el hecho de que exista una comunidad alrededor de él. Existe un canal de Core War en Twitch.tv: www.twitch.tv/corewarglobal, donde podemos disfrutar de las partidas.

Ejecución de pMars en Ubuntu 20.04
Ejecución de pMars en Ubuntu 20.04

Aunque este juego es muy interesante y puede ayudarnos a enfrentar la programación en ensamblador de una manera más amena, hay que reconocer que es complicado y no apto para todos los gustos. No deben ser muchas las personas que consideren emocionante pasar horas programando en Redcode para después ver a sus programas destrozando o siendo destrozados por otros.

A pesar de todo, sigue ahí, una leyenda viva de los tiempos ancestrales cuando Internet aún era joven.


Comentarios