martes, 9 de febrero de 2016

La mierda en el zapato


Al final de un día de mierda,
te vas a la cama
y entonces la hueles:
la mierda en el zapato.
La mierda en el zapato,
al final del día
cuando piensas
que no queda ya nada que pueda pasarte;
cuando sientes
que no estaba todo perdido, que aún quedaba algo
por perder
y no eras consciente de ello.
La mierda en el zapato
que te obliga a seguir despierto,
a deshacerte de ella, a derrochar detergente,
a lavarte las resecas manos
y escribir
un poema de mierda.

jueves, 28 de enero de 2016

Soylent Green: Poema de la soja

Es una pena, entre tantos millones
(siete mil ya) de personas
que haya quien come trufa cada día
y quien no come.
Más si lo piensas,
peor decían que iban a estar las cosas.
Como en aquella película
en que comían Soylent Green
hecho de gente.
¡Comer gente! ¡Qué disparate!
¿No es más fácil comprar las tierras
de esos salvajes despilfarradores
que aún no han sabido cultivarlas
y sembrarlas de soja?
Soja para engordar bien las vacas,
para hinchar los vientres de los congeladores,
para traer filetes que acaben con el hambre
de la vieja Europa.
¡Y tanta hambre, los pobres!
¿Es que no saben comer su soja?
Y en algún lugar del periódico
ves, pequeñita,
una nota diciendo que esa soja
crece entre sangre.
Cuando al fin comprendes tu hipocresía
después de rasgar tus vestiduras
lamentando el mal que seguirás causando,
aprovechas las rebajas,
renuevas tu vestuario
y empiezas a criticar a tus víctimas:
al fin, coherencia.

martes, 26 de enero de 2016

El encriptador PC-Secure de PCTools (1989-1990)

Cuando tuve mi primer pc, allá por 1991, tardé bastante en conseguir un programa de compresión de archivos, algo que en aquella época era mucho más necesario que actualmente. Tengamos en cuenta que mi primer disco duro tenía 20 megas de capacidad, que todavía se vendían los diskettes de 5¼ pulgadas y 540 Kb y que, si bien los disquettes de 3½ pulgadas de alta densidad podían contener 1,44 megas, a menudo había que conformarse con hacer un agujero en el lateral de los diskettes de «doble cara, doble densidad» de 720 Kb, más baratos, y rezar porque MS-DOS no encontrase muchos problemas a la hora de formatearlos con el doble de densidad de la garantizada por el fabricante.

Conseguí mis primeros compresores como parte de los programas que regalaban las revistas de informática. LhArc, el compresor japonés que producía archivos Lzh, se usaba (con otro nombre, claro está) en el disco de instalación de una demo de ContaPlus que regalaba una revista de software «serio», probablemente PC-Magazine. PkUnZip vino en un HobbyPC, como parte de la instalación de la demo de un juego, quizá "La bella y la bestia"; el problema es que sólo servía para descomprimir. La utilidad Arj, que se convirtió en mi favorita, me llegó también en un disco de instalación; no recuerdo en cuál. En cuanto a Tar, Gzip y demás utilidades tipo unix no las conocería hasta que hice mis pinitos con un compilador para PC llamado djgpp, que conocí poco antes de intentar usar linux... pero esto ya bien entrados los noventa, cuando ya tenía acceso a colecciones de shareware en cd-rom. Más o menos al mismo tiempo llegó Rar, también en un CD de shareware.

Por ello, durante un breve tiempo utilicé el backup de MS-DOS para hacer copias de seguridad (no ahorraba mucho espacio, sólo lo que la arquitectura del sistema de archivos FAT de Microsoft derrochaba habitualmente), el PCBackup de PC-Tools (tampoco comprimía los archivos, pero añadía un sector adicional, que suponía de un 5 a un 10% de espacio, a cada disquete) y, muy brevemente, el encriptador PC-Secure (no confundir con el antivirus homónimo) de la misma suite, que además de encriptar los archivos los comprimía con un ahorro del... ¡10%! Imagináos qué desesperado debía de estar para emplear ese programa.

* * *

Así que años después me he encontrado, tratando de organizar mis viejos programas basic, con tres archivos con extensión ".SEC", de dos de los cuales disponía también de la versión en texto plano. Las letras "PCT5" con que se iniciaban los ficheros me indicaron que las había creado algún programa de la suite PC-Tools. Entonces recordé lo que os he contado sobre ficheros comprimidos, encriptación, etcétera. Fui al trastero y busqué un de PC-Tools. A lo largo de mi vida he usado PC Tools 4, 5 y 6; sin embargo, ante la duda, saqué el primero que encontré. Probé con la clave que todavía creía recordar y encontré que el archivo no se descomprimía.

Después de leer un poco en la red, vi que el archivo usaba una codificación DES de un solo paso, y que, aunque era una codificación compleja, usaba solo una pequeña parte de la clave, así que era posible descrifrarlo por fuerza bruta. Mi primer intento se centró en averiguar cómo se usaba la línea de comandos de PC-Secure para poder hacer un ataque de fuerza bruta sin tener que enviar pulsaciones de teclado. Descubrí que, aparentemente, la sintaxis era:

  • PCSECURE /kclave /f fichero para encriptar (¿añadir /c para comprimir?)
  • PCSECURE /kclave /d fichero para desencriptar (¿añadir /c para comprimir?)
Después de un rato, me quedé insatisfecho con la idea de usar la fuerza bruta llamando una y otra vez al programa, lo que generaba cientos de ventanitas abriéndose y cerrándose sobre la pantalla de Windows. Así que usé la opción "encriptar" para crear unos cuantos archivos con las claves "1", "11", "12", "111", "123", "1111" y "1234", para averiguar si el programa guardaba la clave en algún lugar del archivo. Esto es lo que descubrí:
  • El archivo comenzaba con la firma "PCT6"
  • Los siguientes 4 bytes contenían la firma (hash) de la clave como DWord (entero de 64 bits) en el orden lsb...MSB estándar de Intel (es decir, el valor hex 12345678h se guarda como 78h 56h 34h 12h).
  • La firma estaba generada con el siguiente algoritmo:
    • Para cada byte en clave:
    • desplaza el hash a la izquierda 4 bits (es decir, hash=hash*16 o hash=hash<<4)
    • haz un o-exclusivo (XOR) entre hash y el byte de la clave.
  • Aparentemente, la firma o hash se usaba como clave XOR a lo largo del resto del archivo, con pequeñas modificaciones (rotaciones de bytes) cada cierto tiempo.

Decidí inicialmente pasar las claves de "fuerza bruta" a través del hash para comprobar si eran válidas antes de enviarlas al propio programa PC-Shell. Y como necesitaba un lenguaje de programación que poseyera un operador shift (hacer un shift en basic, que es lo que tenía instalado, es un dolor de cabeza en cuanto el último bit se activa y el número se convierte en negativo) empleé Processing para Android en modo Java. Era una buena idea, además, porque el procesador de mi móvil es mucho más rápido que el de mi ordenador. Sin embargo el programa volvía a empezar cada vez que perdía el foco. Ahí me empecé a dar cuenta, además, de que algo no cuadraba en el archivo que yo tenía.

Con todo esto, y tras deducir que el número de combinaciones para generar la clave eran finitas (de hecho, se podía deducir una clave "usable" tomando 8 bytes, uno por cada media palabra), probé otro ataque de fuerza bruta mucho más rápido porque se limitaba a probar combinaciones de 4 caracteres en lugar de todas las posibles entre 1 y 16 letras.

// Python

//Sustituir esto por los bytes 6-8 del
//archivo grabado por pcsecure.exe:
miclave=0x5d7ee440

//Archivo de salida
handle=open ("C:\salida.txt","a+")


bita=0
while (bita<=255):
    bitb=0
    while (bitb<=255):
        bitc=0
        while (bitc<=255):
            bitd=0
            print hex(bita)+" " + hex(bitb)+" "+hex(bitc)+" "+hex(bitd)
            while (bitd<=255):
                clave=bita
                clave=(clave<<4) ^bitb
                clave=(clave<<4) ^bitc
                clave=(clave<<4) ^bitd

  // Lo siguiente podría depender del archivo
  // PCSECURE.CFG con que se hayan encriptado
  // los archivos originalmente:

                clave=(clave ^0x8090000)
  // (Mi archivo pcsecure.cfg comienza 08 09 00 00 )

                if (clave==miclave):
                    print "solucion:"+ hex(bita)+" " + hex(bitb)+" "+hex(bitc)+" "+hex(bitd)
                    handle.write ("solucion:" + hex(bita)+" " + hex(bitb)+" "+hex(bitc)+" "+hex(bitd))
                    handle.flush()
                    handle.close ()
                    quit()
                if ((clave & 0xffff) == (miclave & 0xffff)):
                    print "parcial:"+ hex(bita)+" " + hex(bitb)+" "+hex(bitc)+" "+hex(bitd)
                    handle.write ("parcial:" + hex(bita)+" " + hex(bitb)+" "+hex(bitc)+" "+hex(bitd))
                bitd=bitd+1
            bitc=bitc+1
        bitb=bitb+1
    bita=bita+1

Mientras el programa de fuerza bruta iba funcionando, probé también el acercamiento de emplear una clave de 16 bits (si el hash era algo así como «5d7ee440», podría funcionar elegir el modo hex e introducir la clave «05 0d 07 0e 0e 04 04 00», y de hecho la clave hex máxima tenía precisamente 8 bytes, es decir, 16 cifras). Para mi desesperación, comprobé que PC-Secure graba la clave en un lugar totalmente diferente cuando se seleccionaba la opción "hex".

Además, había encontrado que mis archivos no acababan de cuadrar con el método de encriptación que había comprobado. Quizá fuera porque estaban comprimidos. Sin embargo, el resultado de la encriptación con compresión de pc-secure era un archivo más o menos del mismo tamaño que el original, con el final del archivo lleno de repeticiones de la clave (¡vaya seguridad!). Pero en los archivos que yo quería desencriptar, que sabía que estaban comprimidos, no tenían bytes repetidos al final.

Finalmente me decidí a rebuscar hasta encontrar el pc-Tools 5, y comprobé que su versión de PC-Secure usaba la misma línea de comandos que el incluido con PC-Tools 6, pero producía archivos completamente diferentes. Después de investigar (creando de nuevo los archivos con clave 1, 11, 12, 123...), decidí que, puesto que el sistema de encriptación era tan distinto (y de hecho, más seguro que PC-Tools 5, pues no incluía claves visibles al final de los archivos comprimidos), lo más sensato era probar mi vieja clave con *esa* versión de PC-Secure.

Funcionó a la primera

Ya sé que no se puede esperar mucho de un programa de hace 26 años, pero me maravillan dos hechos. Primero, ¿por qué PC-Secure 6 no avisa que no sabe descifrar un archivo creado con versiones anteriores? De hecho, los reconoce como archivos cifrados. Y, en segundo lugar, ¿por qué PCSecure 6 era menos seguro que PCSecure 5? ¿Se debe, quizá, a que, como se puede leer en el código de PCSecure 5, el primer programa fue desarrollado por terceros? No sería de extrañar: el mismo esquema el mismo esquema apareció con las utilidades de terceros incluidas en las últimas versiones de MS-DOS, luego discontinuadas. ¿O acaso los programadores de PC-Secure tuvieron miedo de haber vulnerado los tratados norteamericanos conta la exportación de tecnología de encriptación en la versión más antigua?

Se trata de un pequeño misterio que me habría gustado haber descubierto muchos años antes, cuando todavía hubiera existido la posibilidad de encontrar en la red a alguien que hubiera sido un usuario experto de aquellos programas. Aquí lo dejo como aviso a navegantes.

lunes, 11 de enero de 2016

John Brunner: Todos sobre Zanzíbar

BRUNNER, John: Todos sobre Zanzíbar. Barcelona, Acervo, 1979. 722 pág.
ISBN:
84-7002-276-8
Descriptores:
Ciencia Ficción. Distopías. Superpoblación. Supercomputación. Economía-Ficción. Drogas y psicodelia.

Escrita en 1968, Todos sobre Zanzíbar establece la población humana en los siete mil millones de personas (7×109), un límite parecido al calculado por Asimov en Bóvedas de acero, pero en este caso la acción se sitúa en 2010, justo un año antes de que esa cifra de población se alcanzase en la realidad. Como en el libro de Asimov, (y a diferencia de ¡Hagan sitio! ¡Hagan sitio! de Harrison, con el cual lo confundí al comprarlo) la mayor dificultad de la superpoblación no es alimentar a las personas sino encontrarles alojamiento, aunque aparecen de modo soslayado comentarios sobre el deber de reciclar todos los productos de la sociedad de consumo (a pesar de lo cual se sigue despilfarrando). La superpoblación origina una durísima legislación eugenésica que es el motor principal de la trama de esta novela.

En efecto: a excepción de algunos estados subdesarrollados, como la pequeña Beninia, o teocráticos, como España (parece que Brunner no concebía el final de Franco), los mínimos defectos genéticos de los padres (incluidas peculiaridades inocuas como el daltonismo) les incapacitan para tener hijos, siendo perseguida la madre y destruido el feto en caso de gestación. Y aun así, los progenitores autorizados deben tomar precauciones para evitar los celos de sus vecinos. A pesar de la existencia de alimento suficiente, la sociedad se ha vuelto violenta, hecho que se atribuye a la existencia de un límite psicológico de población que ya en tiempos de la antigua Roma provocaba casos de locura ("locriminalidad", de "Loki" + "crimen") en las grandes ciudades, y que se puede observar también en experimentos con animales de laboratorio. Junto con la locura de las ciudades, la locura internacional de una guerra interminable entre China y Estados Unidos por una pequeña isla de las Filipinas, y los constantes sabotajes, supuestamente pro-chinos, en la costa oeste de Estados Unidos.

Hay varias salidas contra la locura. Mientras el omnisciente Shalmaneser, un supercomputador superconductor refrigerado con helio líquido, busca soluciones de corte económico, la población se refugia en paraísos artificiales procedentes del hachis, el alcohopazo ("¿alcohol + copazo?"), la droga de síntesis casera Rompecranium y drogas de diseño industrial como la Viajina. También el sexo, como en Un mundo feliz, es un paraíso artificial: las mujeres no trabajadoras (y en este libro son mayoría) se visten con ropas desechables "acmax" (de "acceso + máximo") que no dejan nada a la imaginación y viven de prestado en los apartamentos de sus amantes hasta que estos se cansan de ellas. El último gran paraíso artificial es la televisión tridimensional, donde unos "señor y señora dondequiera", personalizados en cada televisor que se vende, permiten que el hombre común se vea a sí mismo viajando por el ancho mundo o protagonizando las noticias.

Un rayo de esperanza surge cuando un prometedor embajador norteamericano que ha decido aceptar un puesto en Beninia (excolonia británica imaginaria situada junto al golfo de Benín, quizá inspirada en la "República de Benín" proclamada por Biafra en 1967, y no en el Benín actual, llamado "Dahomey" en la época) vuelve de ese país convencido de que hay algo allí que debe compartir con el mundo: es el único país donde no ha habido asesinatos durante sesenta años. El presidente se está muriendo y cree que la única manera de mantener la independencia será "vender" el país a una gran compañía norteamericana para evitar que el resto de países africanos lo invadan.

Como se puede ir deduciendo, se trata de una novela de múltiples tramas, y coral. Tiene una estructura de collage, donde se mezclan anuncios, indicaciones callejeras, guiones televisivos, trozos de diálogo y citas de la obra del sociólogo Chad C Mulligan, uno de los grandes aciertos del libro y fuente inagotable de sabiduría:

(INJUSTO: término aplicado a ventajas disfrutadas por otras personas a quienes se las hemos intentado arrebatar engañosamente sin conseguirlo. Ver también FALSEDAD, TURBIO, FURTIVO y NO ES MÁS QUE SUERTE. —Chad C Mulligan: Diccionario del felicrimen).

Atendiendo a esa estructura de collage, el libro se divide en diversas secciones, completamente separadas en el índice, aunque luego se intercalen unas con otras en la novela. Por ejemplo, "Contexto" suele dar un mosaico de informaciones sobre el mundo en que se ambienta la trama; "Las cosas que pasan" recoge tramas secundarias y "Continuidad" una de las tramas principales. Al principio de la novela se nos informa sobre todos los personajes mediante frases breves incrustadas entre fragmentos que hablan sobre el mundo de la novela; al final de la misma, un "Obituario" nos recuerda quiénes han muerto a lo largo de la trama. Esta estructura es una de las grandes "puertas cerradas" que encontrará el lector en su camino, aunque es posible que quienes han leído más ciencia ficción de la época (estoy pensando en Samuel R. Delany y su Dhalgreen) estén acostumbrados.

En cuanto a la capacidad del autor para predecir el futuro, acierta en su predicción numérica de población pero no en que la mayor parte de esa población no está en el primer mundo; acierta en su predicción de que los avances tecnológicos no llegan cuando la técnica los permite, sino cuando el consumidor está "maduro" para pagar por ellos; pero no sospecha que la inseminación artificial será un artículo de consumo masivo. Concibe la television tridimensional y el videoteléfono, pero cree que los ordenadores domésticos serán meras terminales (aunque, al paso que vamos...); imagina una proliferación de pisos compartidos incluso entre ejecutivos, lo que no ha llegado aún, y nuevas formas de familia, lo que no está tan lejos. En la figura de la "vieja TG" reivindica a la mujer trabajadora; sin embargo, cree que será la excepción. Anticipa la llegada de los vuelos suborbitales supersónicos, que, aunque cada vez más cercanos, siguen siendo una quimera, y los taxis con línea directa con la policía, que llevan aquí un tiempo. Su mayor temor es la eugenesia, pero no llega a imaginar que serán los propios padres quienes la acepten con felicidad.

En conclusión, es un libro que une el esfuerzo de anticipación científica y la experimentalidad con la voluntad de llenar la novela de acción. Es difícil de leer, pero creo que merece la pena el esfuerzo, pues una vez superadas las primeras secciones "Contexto" nos sumerge en un mundo sorprendente y en una trama trepidante y a la vez delirante.

sábado, 26 de diciembre de 2015

Alfau: Cuentos españoles de antaño.

ALFAU, Felipe: Cuentos españoles de Antaño/ Prólogo y traducción de Carmen Martín Gaite. Ilustraciones de Rhea Wells. Madrid, Siruela, 1991. 140 págs. Índ., intr.,  ilustr. 23 cm.
ISBN:
84-7844-401-7.
Descriptores:
Cuento infantil. Cuento maravilloso.

Encontré estos cuentos en un mercadillo navideño y los compré pensando que iban a ser una colección de cuento tradicional a la manera de las de Aurelio Espinosa. Nada más lejos de la realidad. Se trata de cuentos poéticos a la manera de los de Wilde que toman la ambientación y personajes de la tradición  española como excusa para hablar sobre el origen de diversas plantas, animales, fenómenos de la naturaleza... como una especie de mitos sin dioses.

Está primorosamente ilustrada -los dibujos son reproducción de los de la edición original en inglés- y, al haberse traducido en tiempos recientes, la lengua es, aunque literaria, perfectamente accesible para las nuevas generaciones.

Ya les hablé en otra entrada del blog sobre el autor, un emigrante llegado a Nueva York con 14 años. Este es su segundo libro, y el primero que verá publicado (a sus 27 años), y aunque su composición parezca simplemente correcta -a la manera de cualquier autor mercenario que trabajase para calleja- hay ciertos indicios, acá y allá, que nos indican que el autor buscaba crearse una reputación literaria.

Por ejemplo, algunos comentarios irónicos del narrador. Inicialmente, guiado por la introducción, traté de atribuir a la renovación de la narrativa a principios del XX, con algo del Unamuno de Niebla y más del Pérez de Ayala de Troteras y Danzaderas, pero son indudablemente un remedo del Wilde de El príncipe Feliz. En el cuento "La rivalidad": "Realmente su conducta, incluso teniendo en cuenta que era un conde, sobrepasaba las normas de la más elemental educación". Y en el cuento "El gusano de oro", último del libro: "Porque el cuento que te he contado no es verdad".

También es literario el hecho de que el cuento inicial aluda a los demás de la colección y el final, como se acaba de indicar, nos devuelva a la realidad recordándonos la falsedad inherente a la ficción.

Carmen Martín Gaite destaca el aire cervantino de los personajes, especialmente el pintor del primer cuento, y el recurso constante a los narradores colaterales, algo que, si bien es cervantino, también es propio del cuento. Para ella el cuento más complejo es "El arco iris", que yo no encuentro bien resuelto; y el mejor compuesto "El sauce y el ciprés". Por mi parte, mi preferido es "La bruja de Amboto", el único en que veo algún reflejo de la tradición popular.

En cualquier caso, es una buena colección de cuentos que nos devuelve a ese mundo infantil donde todo era mágico.

domingo, 13 de diciembre de 2015

Isaac Asimov: Bóvedas de Acero.

ASIMOV, Isaac: Bóvedas de Acero. Orbis, 1986. 173 pág.
ISBN:
84-7634-087-7
Descriptores:
Ciencia Ficción. Robots. Detectives.

La Tierra, miles de años en el futuro. La ingente población vive apiñada en ciudades abovedadas —cavernas en el título original—, aisladas completamente del exterior, y con miedo a los espacianos, habitantes de los cincuenta mundos originalmente originalmente colonizados por la Tierra que después de independizarse han adquirido un poder espantoso gracias a su fantástica tecnología. En Espaciópolis, la única base espaciana en la Tierra, un eminente sociólogo es asesinado. El detective Baley de la policía de Nueva York se verá obligado a trabajar codo con codo con R. Daneel — la R significa Robot— para resolver el caso.

Se trata, claro está, de una de esas novelas sobre robots en que Asimov intentó dar rienda suelta a su talento para la novela detectivesca de solución ingeniosa (recuérdense sus Cuentos de los viudos negros), analizando por enésima vez las consecuencias de las famosas tres leyes de la robótica por él inventadas. Al lector actual le chocará el contraste entre futurismo e incapacidad para ver más allá de sus narices de estas novelas de la era de la guerra fría: se predicen las maravillas y las consecuencias de la robótica, varios miles de años en el porvenir, pero la situación de la mujer sigue siendo la misma; se anuncian los riesgos del crecimiento desaforado de la población, pero el límite de población está situado en unas cifras similares a las actuales; se ve como "medievalismo" el uso de gafas, pero los ciudadanos no se operan la vista. Aun así, la sociedad futura que se nos describe es sorprendente, y el caso es resuelto de manera magistral.

Libros en el cajón

Cuando los manuales de literatura abordaban la novela de la transición, era tópico habitual mencionar que en los ambientes literarios de los años 70 se esperaba la aparición, a la muerte de Franco, de grandes novelas guardadas en el cajón por los autores enemigos del régimen, y que ninguna de tales novelas apareció —quizá, pienso yo, porque precisamente la dificultad había estimulado el ingenio de los autores por el camino del posibilismo—. Sin embargo, acabo de descubrir que, hacia 1990, apareció uno de tales manuscritos, la obra Chromos de Felipe Alfau, que fue finalista nada menos que del National Book Award de Estados Unidos.

Y, curiosamente, lo que hace que este caso no pueda considerarse una excepción al tópico es que esta novela, de ambiente totalmente español, está escrita completamente en inglés y su autor, un emigrante, no se expatrió en el 36 por razones políticas, sino en el 16 por razones económicas; de hecho, fue rabiosamente franquista hasta su muerte. Y si sus obras pasaron sin pena ni gloria hasta tiempos recientes fue, quizás, porque se adelantó a su tiempo, como tantos otros: la censura del público es mucho más dura que la de cualquier organismo oficial.

¿Qué pasaría si Vincent Van Gogh o Franz Kafka hubiesen conseguido sobrevivir lo suficiente como para llegar a conocer la fama de sus obras? En el caso de este autor, que llega al éxito ya nonagenario, después de haber renunciado a la literatura durante más de cincuenta años, la reacción fue de auténtica misantropía. Alfau pasó sus últimos nueve años de vida aislado, evitando los periodistas y las llamadas, recluido en un asilo pagado por un susbsidio municipal.

He conocido el caso a través del prólogo que Carmen Martín Gaite hizo a sus Cuentos Españoles de Antaño, una obra para niños magistralmente editada por Siruela que he encontrado en uno de esos mercadillos que abundan en estas fechas. Ya les diré si merece la pena.