miércoles, 23 de noviembre de 2011

Hackeando la hora

Vamos a ver. ¿Alguien ha configurado alguna vez NTP en su ordenador? Aunque sea en un equipo que haga de servidor, ahi, aparcado en un rincón. De esos que llaman headless. Yo lo hice hace tiempo. ¿Cómo? No me acuerdo, la verdad. Era en Linux. Toqué dos ficheros que formaban el cliente y el servidor, los añadí al init.d y teniendo bien configurada la localización para la hora ya estaba hecho.

Una de las cosas que había que buscar era el servidor NTP. Este servidor era el que te iba a dar la hora a tí. Y, a su vez, tu podías hacer de servidor. En mi caso, del propio equipo, que sería el cliente. Para eso, había que ir a la página de ntp.org y buscar el país o continente. En España había 2 o 3 servidores. Eran algo así:

0.es.pool.ntp.org
1.es.pool.ntp.org
2.es.pool.ntp.org
3.es.pool.ntp.org (uno más)

Se pueden encontrar en esta zona de es página.

Y, a partir de ahí, ya tenías puesta la hora exacta en el sistema. Bastante chulo si querías que se cambiase cuando nos hiciesen el cambio del horario de verano/invierno y viceversa.

También, en teoría, algunos de esos relojes que actúan de servidor, se dice que son relojes atómicos. De esos que no se retrasan ni un segundo en nosecuantos miles de años.

Vamos a lanzar varias preguntas al vuelo. ¿Utilizarías un sistema crítico un "reloj" de estos? ¿Te fiarías? ¿Qué sucedería si se viese comprometida la hora de ese reloj? ¿Pasaría algo si decidiese que "no le gusta" la hora de invierno y se quedase donde está? La verdad, se armaría una buena, ¿eh? Desde los equipos que tienen que estar sincronizados al segundo pasando por Kerberos de Microsoft, que permite un "lapsus" de... 5 minutos, si no me acuerdo mal.... Hasta... Hasta... Puffff... Hasta "yo qué se". Es más. Esto sería muy grave si tuviésemos que firmar algún fichero con validez legal. Hace tiempo leí un artículo muy interesante al respecto en Security by Default.

He de decir que estas divagaciones no se me habían ocurrido hasta ahora. Sólo quería hacer una pequeña introducción sobre NTP para ir al tema que quería tratar y he llegado hasta aquí.

Todo esto es a raiz de que mi despertador, que la hora se pone solita con las señales horarias, ha cambiado durante la noche y ha adelantado una hora. Esta mañana (3 de noviembre) ha sonado, lo he apagado y la inercia ha hecho que siguiera con la rutina de siempre. Hasta que ha llegado la hora de lavarme los dientes y he visto que, realmente, era una hora antes. Ya de perdidos al río... he continuado.

Lo primero de todo. Las señales horarias son esos pitidos que suenan en la radio cada hora. Sí. Esos 5 pitidos cortos y uno largo. Eso son las señales horarias.

Las primeras informaciones que veo es que las señales de radio que se envían están en la frecuncia VLF (Very Low Frequency) y LF (Low Frequency). Leyendo la descripción de la Hora ROA, cuyo enlace estaba incluido en el artículo de SbD, se indica que ésta es la hora oficial de España. Ahí hablan precisamente del NTP (hora.roa.es) que comentaba antes.

Por eso yo me pregunto: ¿Se puede hackear un reloj de estos? ¿Qué hay que hacer para emitir una señal que le fuerce a poner la hora que nosotros queramos? Eso es lo que tengo que buscar.

Es muy interesante este artículo. Una de las partes más curiosas es que las señales de baja frecuencia pueden verse alteradas por cualquier chorrada que se tenga en casa. Cómo se comporten estos relojes depende de cómo estén aislados o fabricados. Nos podemos encontrar con que una señal desvirtuada por una interferencia la descarte, pero otra se la quede poniendo mal la hora o no haciendo nada. Pero esto no creo que tenga nada que ver con nada de lo que me sucedió. En otras ocasiones se le ha cambiado la hora y a media noche, ha vuelto a la normalidad. En este caso no sucedió así.

También hay que ponerse en situación. Las estaciones que las transmiten no tienen por qué hacerlo todo el rato. Es más, cada una lo hace cuando le da más o menos la gana. La tónica general es que se hace cada hora. Otras, además, incluyen las medias. Incluso, unas pocas, los cuartos. U otra información adicional mientras que no se emite la hora. Como información meteorológica. Todo esto lo he ido localizando a medida que he ido encontrando sitios que hablaban prácticamente de lo mismo.

Ahora. Sigo con la duda de si una persona de a pie, puede montarse su propia estación horaria. No se trata de montar una como la que nos ponen de ejemplo en Alemania (de hecho, creo que mi despertado se pone por Gran Bretaña, pero tendría que buscarlo), pero, si difundiese a 100 metros o 200 metros. ¿Se podría liar una parda? Por ejemplo, retrasar la hora de los equipos que estén cerca.

Un problema que se me ocurre es que ante dos señales iguales, supongo que prevalecerá la que tenga más potencia o "calidad" de señal. ¿Es posible que, de ser capaces de montar un transmisor de estos doméstico, tenga más potencia que uno "profesional"?

No se. Me da la sensación de que no puede ser tan sencillo enviar una señal de estas. Posiblemente habrá que tener en cuenta la frecuencia en la que se quiere transmitir, la distancia a la que se quiere llegar (en mi caso, con unas decenas de metros, o 100, más o menos), el trasto que nos hará falta, y sus implicaciones legales. Nada. Aquí dejo mis divagaciones. Si a alguien se le ocurre, ya sabe.

Y ahora. ¿Cómo puedo acabar? Pues con una curiosidad que he encontrado mientras buscaba datos para este post. O este otro blog o este otro (aunque acaban diciendo exactamente lo mismo).

lunes, 14 de noviembre de 2011

Las apariencias engañan

Hoy voy a contar una de esas cosas muyyyy básicas (¿me dio la idea de escribirlo el libro de Sergio de los Santos? No lo se, pero esto yo ya lo conocía de hace... 10 años). Al menos en teoría. A ver. Un sondeo: ¿cuántos de vosotros tenéis activadas ahora mismo la visualización de las extensiones de los ficheros? ¡¡Así me gusta!! ¡¡Que todos las tengáis activadas!! ¿Por qué?

Bueno. Vamos ver. Como norma general, un fichero con una extensión tiene asociado un programa. ¿Verdad? Y cómo identificamos qué programa nos abrirá ese fichero. Mediante dos cosas. Una, será el icono que tenga ese "archivo". Otra, las extensiones, que nos dirán de qué tipo se espera que sea. ¿Qué nos podemos encontrar? Nos podemos encontrar con varios escenarios.

Escenario 1

Tenemos un fichero, que parece que es un .doc por su icono, y que tiene una extensión .exe. Con las extensiones activadas no hay problema. Nos llama la atención y lo primero que hacemos es cercenarlo. La otra posibilidad es que no estén activas. Nos parezca que sea un word, lo ejecutemos, todos muy inocentes, y nos comamos un bicho como una catedral.

Escenario 2

Tenemos un fichero, que su icono es raro, y que tiene una extensión .exe. Aquí poco se puede decir. Cada programa tiene un icono de su padre y de su madre. Puede ser bueno, puede ser malo. La verdad, se me acaba de ocurrir esta posibilidad y no la tenía planteada. Tendremos que tener en cuenta de dónde lo obtenido, si sabemos qué es o no lo sabemos, qué privilegios va a necesitar y si son necesarios... Cosas como mínimo básicas para tomar la decisión de ejecutarlo o no. Evidentemente, si las extensiones están ocultas... No hay mucho más que decir, ¿verdad?

Escenario 3


Tenemos un fichero, que su extensión es .mp3 y su icono no corresponde con tu reproductor. O .doc y no corresponde con el Office. Sin extensiones visibles, no sabes qué vas a abrir (sigue leeeyeeendoo). Con extensiones: verás que se supone que esos ficheros pertenecen a unos datos en concreto, ya sea música o un fichero con texto formateado. ¿Posibilidades aquí? Se me ocurren: Que hayan hecho algún cambio en el icono. Creo recordar que se podía hacer de manera individual, pero no me acuerdo muy bien cómo, la verdad. La otra posibilidad, más plausible, es que en el sistema se haya indicado que sea otro programa el que lo abra y éste haya cambiado los iconos asociados. ¿Has sido tú, expresamente, el que ha permitido ese cambio? Si no lo has hecho tú...

Escenario 4


Tenemos un fichero, cuya extensión es .doc y su icono es... el de Word. Sin extensiones: lo más probable es que abras el Office, ¿Seguro que es un Word y no alguna de las otras posibilidades comentada más arriba? Si ves la extensión, sabrás que se debería de abrir el mencionado paquete de ofimática.

Escenario 5


Este tiene su miga. Si ves un fichero cuya extensión es .doc.exe, .mp3.exe, etc, etc... con mucho cuidado de no hacer doble click, eliminas esos ficheros.

Todo esto se aplica bastante en Windows. El otro sistema operativo que conozco es Linux. Hace tiempo que no lo toco, pero ya se sabe que en éste las extensiones no tienen nada que ver. Un simple permiso de ejecución, una aplicación (o la shell) y ya esta!

Seguro que me dejo más ejemplos en el tintero. Ya sabéis que me gustan las ideas, réplicas... Era un tema que se me ocurrió hace unos días del que podía hablar. Tal y como comento al principio del post, es algo bien sabido, pero a veces se nos puede escapar. O a alguien, por mucho que sepa, puede no haber caído. ¿O es que todos somos perfectos?

viernes, 4 de noviembre de 2011

Creando disco de instalación Windows 7

Este post pertenece a la serie de los AIK. Es que este programa puede dar mucho juego. :). Hoy, voy a hablar de una cosa muy archiconocida. Montarse el WinPE para que haga una instalación. ¿Veis? Es algo que muchos habréis hecho ya. La verdad, yo lo intenté en su momento, en diversas ocasiones, y no lo conseguí. Hasta hace poco. Lo logré. Hay cosas que en los manuales no cuentan, o por olvido, o porque no les ocurre contarlo. Además, me podría servir para sucesivos posts. ¿Qué más puedo decir? Sí. Por ejemplo, que, como cabezota que soy, me apetece hacerlo de esta forma. No entremos en discusiones de si sirve de algo o no. Si queréis, podemos poner la excusa de que quiero poner las herramientas de sysinternals en el mismo DVD de instalación. O que quiero hacerlo de manera artesanal.

¿Cuánto espacio vamos a necesitar para hacer esta tarea? Pongamos unos 10GB y de sobra.

Lo primero que vamos a necesitar es el entorno para montar todo el tinglado. Así que, crea una carpeta con el comando copype tal y como contamos en otra ocasión. Recuerda: hazlo como admin, lo necesitarás. Yo he llamado a la carpeta installWin7Blog.

También vas a necesitar una serie de paquetes .cab, que son los que nos van a añadir funcionalidades a nuestra imagen. Por defecto se encuentran en C:\Program FilesWindows AIKTools\PETools\arquitectura. Recomiendo hacer una copia a un lugar más accesible.

¿Ya lo tienes? Bien. Ahora, toca manipular la imagen que usaremos de base. Deberíamos de estar dentro de la carpeta recién creada, que va a ser donde vamos a trabajar. Ahora, montaremos la imagen winpe.wim, que está justo ahí, en la carpeta mount. Después, le integraremos los paquetes necesarios.

Copia estos comandos, ponlos en un fichero de texto, justo dentro de la carpeta que acabas de crear, y cambia la ruta de los ficheros .cab a la que corresponda. Desde la consola de las herramientas de implementación, ejecútalo.

@echo off
imagex /mountrw winpe.wim 1 mount


dism /image:mount /add-package:f:\winimgs\packagesDism\es-es\lp_es-es.cab


dism /image:mount /add-package:f:\winimgs\packagesDism\winpe-hta.cab 
dism /image:mount /add-package:f:\winimgs\packagesDism\es-es\winpe-hta_es-es.cab 


dism /image:mount /add-package:f:\winimgs\packagesDism\winpe-legacysetup.cab 
dism /image:mount /add-package:f:\winimgs\packagesDism\es-es\winpe-legacysetup_es-es.cab 


dism /image:mount /add-package:f:\winimgs\packagesDism\winpe-mdac.cab 
dism /image:mount /add-package:f:\winimgs\packagesDism\es-es\winpe-mdac_es-es.cab 


dism /image:mount /add-package:f:\winimgs\packagesDism\winpe-scripting.cab
dism /image:mount /add-package:f:\winimgs\packagesDism\es-es\winpe-scripting_es-es.cab


dism /image:mount /add-package:f:\winimgs\packagesDism\winpe-setup.cab 
dism /image:mount /add-package:f:\winimgs\packagesDism\es-es\winpe-setup_es-es.cab 


dism /image:mount /add-package:f:\winimgs\packagesDism\winpe-setup-client.cab 
dism /image:mount /add-package:f:\winimgs\packagesDism\es-es\winpe-setup-client_es-es.cab


rem dism /image:mount /add-package:f:\winimgs\packagesDism\winpe-setup-server.cab 
rem dism /image:mount /add-package:f:\winimgs\packagesDism\es-es\winpe-setup-server_es-es.cab


dism /image:mount /add-package:f:\winimgs\packagesDism\winpe-wds-tools.cab 
dism /image:mount /add-package:f:\winimgs\packagesDism\es-es\winpe-wds-tools_es-es.cab


dism /image:mount /add-package:f:\winimgs\packagesDism\winpe-wmi.cab 
dism /image:mount /add-package:f:\winimgs\packagesDism\es-es\winpe-wmi_es-es.cab 
  
call imagex /commit /unmount mount


La última línea la puedes obviar, de momento. Esta es la que desmonta la imagen "comiteando" los cambios hechos en ella. Como vamos a añadir más cosas, puedes ejecutarla después, o volver a montar y desmontar las veces que haga falta. Eso lo dejo a tu elección.


¿Qué vamos a necesitar añadir?


Lo que necesites. Por ejemplo, como decía antes, una carpeta con las sysinternals, dentro de otra que se llamará herramientas. Para que quede claro, que no está muy bien explicado, sería mount\herramientas\sysinternals. También podríamos poner, por ejemplo, el contenido de la carpeta Tools, que tiene Windows AIK en Program Files. Eso sí. Mucho ojo con no añadir muchas cosas, que si ocupa demasiado, no os arrancará el disco por problemas en memoria y tendréis que volver a repetir el proceso (como un servidor está haciendo ahora mismo).

La siguiente operación va a ser importante. En cada uno de los manuales que he encontrado, no lo dicen. Es más, después, cuando a la gente le sucede, no es tan fácil encontrar la respuesta. Esto es lo que te saldría si te quedases aquí:


Elige un paquete de idiomas... en un combo vacío

¿Cómo se soluciona eso de que el idioma que va a instalar esté vacío? En teoría, hay que ejecutar una línea de comandos. Pero no he conseguido hacerlo funcionar así. Después de mucho ensayo y error (sólo lo conseguí una vez) esto es lo que hay que ejecutar (o añadir al script de más arriba):

intlcfg -dist:ISO -image:mount defaultlang:es-ES -all:es-ES
copy ISO\sources\lang.ini mount\sources\

Si te ofrece sobreescribir el otro lang.ini, acepta. He de decir que he hecho varios intentos para conseguirlo. Como ya he comentado antes, sólo lo conseguí una vez antes de escribir este artículo. Aún así, si alguien conoce los parámetros adecuados para que no haga falta hacer ese copy, por favor, comentadlo.

Ahora, dentro de ISO\sources, meteremos la imagen install.wim. Recodermos que en este .wim está el sistema operativo que acabará instalado en el disco duro.

Una vez has acabado de añadir todas las cosas que se necesita para arrancar el disco tal y como queremos que lo haga, sigue las instrucciones del post indicado antes, desde el momento en el que te indico que sobreescribas boot.wim.

¿Tienes la .iso lista? Vamos a arrancarla.

Elige un paquete de idiomas...

Aquí tenemos la posibilidad de escoger el paquete de idiomas. En este caso, el español. Como ya sabéis, he jugado lo suficiente como para tener lo mínimo necesario para llegar hasta aquí. En principio, si queréis otros idiomas, hay que incluir los paquetes necesarios en el script principal y, después, indicarlo también con el comando intlcfg. Alguien tendrá que corregirme si me equivoco. 

Ahora que hemos llegado hasta aquí, tendremos que lanzar la instalación, digo yo. ¿No? Pues va a ser que...

No encuentra OSimage / image.wim

Eso es porque el ejecutable setup.exe, por dejecto, busca la imagen en sources. Pero no del DVD, sino del ramdisk que se crea al arrancar. Ya lo he intentado meter ahí dentro. El sistema no arranca. Si el boot.wim ocupa 4 GB... Por eso acabó en directamente en el disco. ¿Qué hago para instalarlo? Habrá que abrir una consola pulsando SHIFT+F10.

setup /installfrom:%unidadArranque%\sources\install.wim

Y...

Selecciona el idioma que se va a instalar

Selecciona versión y arquitectura

Y ahí lo dejo. No hace falta que ponga más pantallazos al respecto.

Como habéis visto, basándome en posts anteriores, hemos montado este disco de instalación "rudimentario". Recordemos que la imagen de arranque tiene también las herramientas, que se encontrarán en el ramdisk.

Tengo otro post más o menos preparado en el que vamos a utilizar este disco. O lo vamos a intentar. Si no consigo que me acabe de funcionar del todo, posiblemente busque otra fórmula o método para dejarlo "niquelado".

Ya sabéis que si tenéis alguna idea que queráis compartir, sugerencias, inconvenientes, dudas... dejadme un comentario.