La veracidad UNIX de Tron Legacy

Cuando ví “Tron Legacy” con Turyesdios, asistimos a algunos memorables momentos UNIX que nos hicieron quedarnos con ciertos detalles a los que les sacamos algo de punta.

A mí me hizo tal gracia que no pude resistirme a emparentar al protagonista de esta nueva versión del gran clásico con el programador Ian Murdock, desarrollador de la distro GNU/Linux más famosa en manos de una comunidad de usuarios y no una empresa.

Ian Murdock acabó trabajando en Sun Microsystems y, tras la compra de esta por parte de Oracle y la clausura de OpenSolaris se lanzó a devolverle su sudor a la comunidad (después de no pocas acusaciones de chaquetero cuando fichó por SUN) y empezó a trabajar en el fork libre Proyecto Indiana.

En la película, “La Empresa” cierra el sistema en el que el prota trabaja y éste, con todo su arrojo,  libera el código del proyecto “que sólo cambia el nombre” para que todo el mundo pueda disfrutarlo. Cuando tiene que escapar y se refugia en los viejos recreativos, descubre una máquina de su “viejo” y, con todo el salero de los guionistas y sus documentados asistentes, esta trabaja bajo un sistema operativo ficticio llamado curiosamente SolarOS, y que trabaja fielmente bajo comandos UNIX.

En una entrada cojonuda de Emezetablog sobre tópicos informáticos en las películas, nos hablan de la veracidad de todo el proceso del protagonista en la terminal. Os dejo con el artículo:

5. Tron Legacy: El buen ejemplo

El trabajo realizado en la película Tron Legacy resultó ser bastante acertado y detallado, aunque a priori pueda no parecerlo.

Sam Flynn llega a los recreativos y encuentra un ordenador con una sesión iniciada. En la pantalla se muestra una especie de contador 20:11:20:16:22:14:73, que probablemente representa los 20 años que lleva desaparecido el padre, junto a otras cantidades de menor magnitud (días, horas, minutos, segundos, microsegundos…).

Al acceder al sistema, se encuentra con la sesión de su padre abierta, menciona que accede con una puerta trasera (otro tópico del cine) y activa el láser.

Tron Legacy: Comandos en la terminal del sistema.

La cuestión es que cada uno de los comandos que aparecen en pantalla, son comandos reales de UNIX. Veamos detenidamente cada uno de ellos…

$ whoami
flynn

El símbolo $ en entornos UNIX o Linux simboliza que la cuenta que estamos utilizando es una cuenta de usuario «limitada». Cuando aparece el símbolo # simboliza que estamos con una cuenta de administrador o root, con todos los privilegios del sistema.

En el comando anterior, Flynn utiliza el comando whoami, un comando que muestra el usuario actual que está utilizando el sistema.

$ uname -a
SolarOS 4.0.1 Generic_50203-02 sun4m i386 Unknown.Unknown

En estas líneas, Sam pregunta con el comando uname (información del sistema) que tipo de sistema está funcionando. El parámetro -a muestra toda la información posible.

El sistema utilizado es SolarOS en su versión 4.0.1, un sistema operativo ficticio, derivado de Solaris (nucleo SunOS). Aunque en realidad existe un SolarOS, es bastante diferente al de la película.

$ login -n root
Login incorrect
login: backdoor
No home directory specified in password file!
Logging in with home=/

Gracias a Jesús por facilitarme información sobre esta característica.

En esta parte, Sam comenta que intentará acceder con una puerta trasera, mientras aparentemente accede con un nombre de usuario backdoor. Esto puede parecer una burrada, pero tiene su historia detrás.

El comando login sirve para acceder al sistema con una determinada cuenta de usuario. Si buscamos información sobre el comando login veremos que el parámetro -n no existe.

En la versión 4.0.1 de Solaris 386i, existió un agujero de seguridad conocido, debido a que la utilidad logintool necesitaba realizar tareas de limpieza (pero desconocía la password de root). Así pues, se le añadió la opción no documentada -n, esperando que nadie la encontrara.

El mecanismo de funcionamiento era idéntico al que se utiliza en Tron Legacy. Al realizar un login -n root, el sistema devolvía un error y preguntaba de nuevo un nombre de usuario. Al escribir un nuevo nombre de usuario (por lo visto, cualquiera), te dejaba entrar como administrador.

# bin/history
488 cd /opt/LLL/controller/laser/
489 vi LLLSDLaserControl.c
490 make
491 make install
492 ./sanity_check
493 ./configure -o test.cfg
494 vi test.cfg

Una vez accedió con una cuenta con privilegios de administrador, ejecuta un history, comando que muestra las últimas operaciones realizadas en el sistema.

Se pueden ver las últimas tareas realizadas, como accediendo a la ruta /opt/LLL/controller/laser/, y editando el fichero LLLSDLaserControl.c (supuesto controlador del laser, en lenguaje C) con el editor vi.

Más adelante, realiza un make para compilarlo y un make install para realizar su respectiva instalación. También se ejecuta un sanity_check (una serie de tests específicos) y se ejecuta el script configure, guardando las opciones en el archivo de configuración test.cfg, el cuál modificará mediante el editor vi posteriormente.

495 vi ~/last_will_and_testament.txt
496 cat /proc/meminfo
497 ps -a -x -u
498 kill -9 2207
499 kill 2208
500 ps -a -x -u
501 touch /opt/LLL/run/ok

En el siguiente comando del historial de comandos ejecutados por el padre, se ve como editó un archivo llamado last_will_and_testament.txt, el testamento de Flynn (¿preparando detalles para la segunda parte?).

Posteriormente, comprueba el uso de memoria del sistema haciendo un cat /proc/meminfo, examina las tareas que están funcionando actualmente con el ps y finaliza algunos procesos con el kill.

Finalmente, comprueba de nuevo los procesos activos y actualiza el archivo /opt/LLL/run/ok (probablemente, para especificar que está preparado para activar el laser).

502 LLLSDLaserControl -ok 1
# bin/LLLSDLaserControl -ok 1
* Starting up...
* PSU online
* HV online
* Analog core memory... OK!
* Booting pattern recognition systems
* Merging current data model
* Starting laser emitter
* Particle traps test OK!
* Entangling laser with particle traps

Finalmente, la última línea del historial del padre de Sam, muestra activación del láser ejecutando LLLSDLaserControl con el parametro -ok establecido a 1. Esto hace varias comprobaciones y pregunta al usuario si quiere realizar la apertura del láser.

Anuncios

Acerca de Gaius Baltar
Aficionado a la tecnología informática desde que un MSX pasó por casa y apasionado defensor del Software Libre como religión para unir a los pueblos. Es Gaius Baltar al fin y al cabo, y tiene derecho a equivocarse. Cuando se aburre, redacta y gestiona los contenidos en diversos blogs subculturales.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: