miércoles, agosto 14, 2019

Atari y el código morse insertado en el código de Centipede para detectar copias piratas

No hay nada mejor que una buena anécdota o curiosidad de la informática, ahora que estamos en pleno verano y podemos disfrutar mejor de ellas más relajados/as tomando algo fresquito allá dónde estéis pasando estos días. Esta que os vamos a contar hoy es una en la que se mezcla todo lo que nos gusta: programación, máquinas recreativas, un hack y sobre todo una gran dosis de invención y buenas ideas para solucionar un problema. Ya que realmente de eso se tratan estas microhistorias, de motivación.

Figura 1: Atari y el código morse insertado en el código de Centipede para detectar copias piratas

Ver cómo estas personas resolvieron problemas o inventaron cosas imposibles, es la mejor manera de aprender y sobre todo de sentir esa gran pasión por el hacking, sea cual sea la disciplina a la que te dediques. Recordad que nuestro libro de “Microhistoria: Anécdotas y curiosidades de la Informática” está lleno de historias como estas.

Figura 2: Libro de "Microhistorias: anécdotas y curiosiades de la historia
de la informática (y los hackers)" de 0xWord.

No hace falta que hablemos en profundidad Atari. Todos sabemos su gran influencia en el mundo de los videojuegos, ya sean máquinas recreativas arcade o vídeo-consolas. También era conocida por el ambiente, digamos “distentido” de sus oficinas (las oficinas de Google eran un convento de clausura comparado con el Atari de aquella época, aunque hoy posiblemente sería ilegal).

Incluso el mismísimo Steve Jobs trabajó allí y uno de sus primeros trabajos fue diseñar un PCB con el mínimo número de chips posibles para el juego Breakout … que hizo su amigo Steve Wozniak (con engaño incluido por parte de Jobs). Atari siempre ha sido la inspiración para muchos programadores (e incluso empresas, como Apple), pero también para otras empresas que intentaban hacerse con un hueco en el, cada vez más lucrativo, mundo de los vídeo-juegos.

Por aquella época, escribir código de ordenador no era una tarea sencilla. No existían StackOverflow o Google para echarnos una mano ni tampoco herramientas de ayuda al programador tan sofisticadas como hoy en día. Todo dependía del ingenio de los programadores y de los recursos que tuviera en relación con el hardware sobre el cual tenían que programar.

Por lo tanto, a veces la opción más barata y rápida para crear un programa, un juego en este caso, era copiar íntegramente el código fuente y hacer sólo algunos cambios en la música y en los gráficos. Este problema no era exclusivo de Atari, Apple por ejemplo también sufrió este problema cuando otras empresas intentaron copiar el código de la ROM de los Macintosh.

Figura 3: A la izquierda el Centipede original, a la derecha Magic Worm

Una de las tareas más extrañas asignadas a los programadores de Atari era detectar posibles copias piratas del código fuente de alguna máquina recreativa de la época. En 1981, Atari llevó a juicio a una empresa italiana llamada Sidam, la cual se dedicaba a sacar “clones” de los juegos de Atari. En Norteamérica, estos juegos eran distribuidos por una empresa canadiense llamada Video Amusements of Canada, Ltd.

Figura 4: Publicidad del juego Centipede de Atari

En concreto, Atari los denunció por un juego llamado Magic Worm, una copia absolutamente descarada del clásico Centipede. Por aquella época, estas copias hacían un daño muy grande a las empresas (se vendían a un precio muy inferior a los originales), así que era cuestión de supervivencia detectarlos e intentar expulsarlos del mercado lo más rápidamente posible.

Ed Logg, toda una leyenda en el mundo de la programación, el cual trabajaba en Atari por aquella época (1981), fue asignado con la tarea de analizar el código fuente de Magic Worm y de esa forma, tener una base legal contra la empresa Sidam. Además, él fue quién desarrolló junto a Dona Bailey (una de las primeras programadoras de vídeo-juegos) el mismo Centipede, por lo que conocía perfectamente el código fuente.

Esto era una tarea realmente compleja, ya que explicar ante un juez y a un jurado algo tan nuevo y complejo como el código fuente de un programa y demostrar que se había copiado no era tarea sencilla (los que os dedicáis al Análisis Forense Informático seguro que lo entendéis perfectamente).

Pero Atari iba a poner todo su empeño en defender sus productos con todos los recursos a su alcance. Aquí tienes en PDF, el manual completo de mantenimiento de la máquina recreativa original de Centipede y en este otro el de Magic Worm por si queréis compararlos.

Figura 5: Máquina original de Centipede de Atari

El juego Centipede se desarrolló en un periodo de 10 meses con el trabajo de 14 programadores a tiempo completo. Si al coste de este equipo humano de desarrollo le sumamos todo el proceso de marketing y distribución, el juego finalmente originó unos gastos a Atari de más de 500.000$ de la época. A pesar la alta inversión de desarrollo, los juegos de Atari eran rentables debido al auge de las máquinas recreativas, las cuales estaban en plena expansión por todos los bares y recreativos.

El coste de una máquina completa de Centipede (recordemos que el código fuente iba almacenado directamente en una PCB) era de unos 2.000$ de la época. Durante 1981, Atari vendió 46.062 de ellas, ingresando alrededor de 92 millones de dólares en ventas, por debajo sólo del mítico Asteroids (también de Atari). Por lo tanto, era lógico que la empresas de Nolan Bushnell y Ralph Baer, defendiera la piratería de sus productos con todas sus fuerzas.

Volviendo al análisis de Centipede por de Ed Logg, este encontró muchísimas similitudes entre ambos códigos fuente. Antes de continuar, recordemos que Centipede era un juego bastante original, un concepto nuevo (incluso el mando era original, se utilizaba una trackball en vez de un joystick) el cual mostraba un juego de disparos en el que el protagonista era un gnomo que tenía que defender su jardín (sobre todo los champiñones) de una invasión de ciempiés y otros insectos (ahora entendemos mejor lo del ambiente distendido de Atari).

Por lo tanto, era bastante improbable que otra empresa hubiera pensado en ese mismo concepto justo a la vez que Atari. Así que Magic Worm se limitó a copiar todo, haciendo cambios sutiles como, por ejemplo, eliminar el mensaje de copyright de Atari por supuesto, cambiar los champiñones por manzanas así como otros cambios menores asociados a los sonidos (la PCB de Magic Worm no podía utilizar el chip de audio propiedad de Atari llamado POKEY, por lo que tuvo que programar todos los sonidos desde cero con otro circuito integrado). Era obvio que estábamos ante una copia descarada de Centipede pero aún así había que demostrarlo.

Figura 6: Placa base del juego Magic Worm

La distribuidora Video Amusements of Canada, declaró en su favor que su juego había sido “inspirado” por Centipede, pero que el código fuente era íntegro de ellos. Y aquí está la clave ¿cómo se puede probar este hecho al 100%? Era complicado pero Atari tenía una prueba irrefutable de la propiedad de su código, una que dormía indetectable entre las miles de líneas del programa Magic Worm.

Como Atari ya veía venir este problema de las copias piratas, decidieron poner algunas trampas difíciles de encontrar dentro del código fuente. Estas trampas o hidden code traps solían ser patrones, porciones de datos que no tenían una funcionalidad aparente en la ejecución del programa. De hecho, no creaban ningún patrón en pantalla ni ningún sonido (esto sería más fácil de detectar por su acceso a pantalla y al chip de sonido respectivamente) sino que simplemente eran directamente bits codificados con un mensaje que probara su autoría real, una especie de firma digital.

Figura 7: Vídeo de Magic Worm

Pero ¿en qué consistía ese mensaje oculto en Centipede? Si echamos un vistazo los datos en binario de la ROM de Centipede, podemos encontrar la siguiente cadena en hexadecimal:
02 bb 5a 30 5f ee 7d a8
En binario:
00000010 10111011 01011010 00110000 01011111 11101110 01111101 10101000
Si no tenemos en cuenta los espacios, obtenemos una cadena de 1 y 0 completa:
1010111011010110100011000001011111111011100111110110101000
Ahora sólo tenemos que sustituir el 1 por “raya” y el 0 por “punto”:
-.-.---.--.-.--.-...--.....-.--------.---..-----.--.-.-...
Que corresponde, en código morse a:
(C)-.-. (O)--- (P).--. (Y)-.-- (R).-. (I).. (G)--. (H).... (T)- (1).---- (9)----. (8)---.. (0)----- (A).- (T)- (A).- (R).-. (I)..
Figura 8: Código Morse

Es decir:
COPYRIGHT1980ATARI
No más preguntas señoría ;)

Con esta prueba irrefutable, Atari ganó el juicio llegando a interrumpir la distribución de Magic Worm en Canadá. Video Amusement no pudo pagar la multa impuesta por lo que directamente la distribución del juego se detuvo en Norteamérica, aunque sí que pudo seguir distribuyendo el juego en Europa durante un tiempo.

Gracias a esta genial idea de oculta el mensaje en código, este juicio fue una gran victoria para Atari la cual consiguió, al menos durante un tiempo, asustar un poco a las empresas que tuvieran la osadía de copiar su código fuente. Sirva este artículo como homenaje aquellos que os dediquéis al noble y poco reconocido (al menos en España) ARTE de la programación, ya seáis del equipo de Ideas Locas, ElevenPaths, Telefónica o de donde sea. Existen miles de historias de códigos ocultos y huevos de pascua en programas, máquinas recreativas o incluso objetos cotidianos, pero eso amigos/as, son otras microhistorias ;) ¡Feliz verano!

Fran Ramírez, (@cyberhadesblog) es investigador de seguridad y miembro del equipo de Ideas Locas en CDO en Telefónica, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps" y del blog Cyberhades.

Rafael Troncoso (@tuxotron) es Senior Software Engineer en SAP Concur, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps" y del blog Cyberhades.

3 comentarios:

nbopmp dijo...

Jajaja, qué crack los de la idea del morse. Muy buena codificación.

Jon dijo...

Gracias! Que historia tan entretenida en un Agosto de refritos televisivos

Noé Espinoza dijo...

Woooow que interesante !

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares