Las fechas de nacimiento de Torvalds y sus hijas en las cabeceras del kernel
1 de marzo de 2019 • fjbalon
Me han propuesto un reto: encontrar las fechas de nacimiento de Torvalds y de sus tres tres hijas en las cabeceras del kernel. Es un easter egg que dejó Linus para los más curiosos. Vamos allá.
Encontrar las fechas es relativamente sencillo para quien sabe dónde buscar. No es mi caso, que tras una breve búsqueda en Internet identifiqué la localización de dichas fechas en la ruta /usr/include/linux/, encontrándose con la extensión .h. Es fácilmente localizable utilizando la conocida herramienta grep y buscando las cadenas de texto 'LINUX REBOOT MAGIC'.
# grep LINUX_REBOOT_MAGIC /usr/include/linux/*.h
/usr/include/linux/reboot.h:#define LINUX_REBOOT_MAGIC1 0xfee1dead
/usr/include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2 672274793
/usr/include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2A 85072278
/usr/include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2B 369367448
/usr/include/linux/reboot.h:#define LINUX_REBOOT_MAGIC2C 537993216
Encontramos entonces que nos devuelve una información en un formato quizás extraño, que corresponde a los siguientes ¿enteros?: 672274793, 85072278, 369367448 y 537993216.
En un principio supuse que se trataba de timestamp, un formato de tiempo utilizado frecuentemente por los sistemas Unix y derivados; éste cuenta la cantidad de segundos transcurridos desde el EPOCH (fecha 1970-01-01 00:00:00 GMT). Por lo que, transformándolo con una simple línea Perl a formato localtime bastaría.
$ perl -e 'print localtime(672274793). "\n";'
Mon Apr 22 00:59:53 1991
$ perl -e 'print localtime(85072278). "\n";'
Mon Sep 11 16:11:18 1972
$ perl -e 'print localtime(369367448). "\n";'
Tue Sep 15 04:04:08 1981
$ perl -e 'print localtime(537993216). "\n";'
Sun Jan 18 19:33:36 1987
Obtenemos las fechas: 22/04/1991, 11/09/1972, 15/09/1981 y 18/01/1987.
¿He conseguido el reto? Nada más lejos... Al corroborar la fecha de nacimiento de Linus Torvalds hay algo que no me cuadra. Torvalds nació el 28 de diciembre de 1969. La primera fecha podría pasar; pero las 3 siguientes que correspondieran a las fechas de nacimiento de las 3 hijas me hacen pensar: ¿Tordvals tuvo su primera hija con 3 años?. Algo no cuadra.
Tras un tiempo de investigación he dado con la tecla: es necesario pasar a hexadecimal para poder leer la fecha. Siendo
el nacimiento de Linus Tordvals,
el nacimiento de Patricia Miranda,
el nacimiento de Daniela Yolanda y
el nacimiento de Celeste Amanda, las 3 hijas de Tordvals respectivamente.
Estos elementos se tratan de números mágicos; es decir cadenas de caracteres alfanuméricos que identifican un archivo (ID). El objetivo de estos números mágicos concretos, grosso modo, es el de proteger la llamada verdadera REBOOT del sistema, ya que es una llamada destructiva que puede arrojar graves errores de programa. Linux ofrece una protección extra de esta forma.