static-httpd

Sitio web estático (HTML + CSS) que sostiene el blog del autor
Log | Files | Refs

index.html (5310B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      5 <meta name="viewport" content="width=device-width, initial-scale=1" />
      6 <title>Las fechas de nacimiento de Torvalds y sus hijas en las cabeceras del kernel</title>
      7 <link rel="icon" type="image/png" href="/favicon.png" />
      8 <link rel="stylesheet" type="text/css" href="../article.css" />
      9 </head>
     10 <body>
     11 <header>
     12 <p class="title">Las fechas de nacimiento de Torvalds y sus hijas en las cabeceras del kernel</p>
     13 <p class="date">1 de marzo de 2019 • fjbalon</p>
     14 </header>
     15 <p>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á.</p>
     16 <p>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'.</p>
     17 <pre><code># grep LINUX_REBOOT_MAGIC /usr/include/linux/*.h
     18 /usr/include/linux/reboot.h:#define     LINUX_REBOOT_MAGIC1     0xfee1dead
     19 /usr/include/linux/reboot.h:#define     LINUX_REBOOT_MAGIC2     672274793
     20 /usr/include/linux/reboot.h:#define     LINUX_REBOOT_MAGIC2A    85072278
     21 /usr/include/linux/reboot.h:#define     LINUX_REBOOT_MAGIC2B    369367448
     22 /usr/include/linux/reboot.h:#define     LINUX_REBOOT_MAGIC2C    537993216</code></pre>
     23 <p>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.</p>
     24 <p>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.</p>
     25 <pre><code>$ perl -e 'print localtime(672274793). "\n";'
     26 Mon Apr 22 00:59:53 1991
     27 $ perl -e 'print localtime(85072278). "\n";'
     28 Mon Sep 11 16:11:18 1972
     29 $ perl -e 'print localtime(369367448). "\n";'
     30 Tue Sep 15 04:04:08 1981
     31 $ perl -e 'print localtime(537993216). "\n";'
     32 Sun Jan 18 19:33:36 1987</code></pre>
     33 <p>Obtenemos las fechas: 22/04/1991, 11/09/1972, 15/09/1981 y 18/01/1987.</p>
     34 <p>¿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.</p>
     35 <p>Tras un tiempo de investigación he dado con la tecla: es necesario pasar a hexadecimal para poder leer la fecha. Siendo</p>    
     36 <math xmlns="http://www.w3.org/1998/Math/MathML" alttext="0x672274793=2812196928/12/1969" display="block">
     37     <mrow>
     38         <mrow>
     39         <mn>0</mn>
     40         <mo></mo>
     41         <mi>x</mi>
     42         <mo></mo>
     43         <mn>672274793</mn>
     44         </mrow>
     45         <mo>=</mo>
     46         <mrow>
     47         <mn>28121969; 28</mn>
     48         <mo>/</mo>
     49         <mn>12</mn>
     50         <mo>/</mo>
     51         <mn>1969</mn>
     52         </mrow>
     53     </mrow>
     54 </math>
     55 <p>el nacimiento de Linus Tordvals,</p>
     56 <math xmlns="http://www.w3.org/1998/Math/MathML" alttext="0x85072278=51219965/12/1996" display="block">
     57     <mrow>
     58         <mrow>
     59         <mn>0</mn>
     60         <mo></mo>
     61         <mi>x</mi>
     62         <mo></mo>
     63         <mn>85072278</mn>
     64         </mrow>
     65         <mo>=</mo>
     66         <mrow>
     67         <mn>5121996; 5</mn>
     68         <mo>/</mo>
     69         <mn>12</mn>
     70         <mo>/</mo>
     71         <mn>1996</mn>
     72         </mrow>
     73     </mrow>
     74 </math>
     75 <p>el nacimiento de Patricia Miranda,</p>
     76 <math xmlns="http://www.w3.org/1998/Math/MathML" alttext="0x367369448=1604199816/04/1998" display="block">
     77     <mrow>
     78         <mrow>
     79         <mn>0</mn>
     80         <mo></mo>
     81         <mi>x</mi>
     82         <mo></mo>
     83         <mn>367369448</mn>
     84         </mrow>
     85         <mo>=</mo>
     86         <mrow>
     87         <mn>16041998; 16</mn>
     88         <mo>/</mo>
     89         <mn>04</mn>
     90         <mo>/</mo>
     91         <mn>1998</mn>
     92         </mrow>
     93     </mrow>
     94 </math>
     95 <p>el nacimiento de Daniela Yolanda y</p>
     96 <math xmlns="http://www.w3.org/1998/Math/MathML" alttext="0x537993216=2012200020/12/2000" display="block">
     97     <mrow>
     98         <mrow>
     99         <mn>0</mn>
    100         <mo></mo>
    101         <mi>x</mi>
    102         <mo></mo>
    103         <mn>537993216</mn>
    104         </mrow>
    105         <mo>=</mo>
    106         <mrow>
    107         <mn>20122000; 20</mn>
    108         <mo>/</mo>
    109         <mn>12</mn>
    110         <mo>/</mo>
    111         <mn>2000</mn>
    112         </mrow>
    113     </mrow>
    114 </math>
    115 <p>el nacimiento de Celeste Amanda, las 3 hijas de Tordvals respectivamente.</p>
    116 <p>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.</p>
    117 </body>
    118 </html>