La increíble historia del virus Stuxnet

Me fascinan las historias de espías, aunque con frecuencia son tan inverosímiles que parecen pura fantasía. Esto se acentúa aún más cuando abordan el ciberespionaje o el hackeo, donde lo que vemos suele estar diseñado más para impresionar al público que para reflejar la realidad: son tan creíbles como un sordo afinando una guitarra. Sin embargo, hay ocasiones en que la realidad no solo iguala, sino que supera a la ficción.

Stuxnet fue un virus informático que se descubrió en 2010 por la firma de ciberseguridad bielorrusa VirusBlokAda, pero que se sospecha que estuvo activo desde al menos 2005. Su objetivo fue sabotear las centrifugadoras Zippe de Irán para el enriquecimiento de uranio. Aunque existen fuertes indicios de que se trató de un ataque clandestino conjunto de Estados Unidos e Israel, ninguno de estos países ha admitido responsabilidades, y las evidencias sólidas parecen provenir siempre de entidades enemigas. (Un caso de «no tengo pruebas pero tampoco dudas»)

Continuar leyendo «La increíble historia del virus Stuxnet»

De cómo clonar una instancia de Prestashop

Últimamente he estado ayudando a mi vecino con su web de Prestashop. He aprendido a hacer algunos truquillos, como editar el aspecto general de la web, hacer y deshacer backups con un entorno limitado pero mi mejor invento ha sido el de clonar la instancia de Prestashop para tener una de test donde probar sin miedo a romper cosas. Aquí el código para quien le pueda ser de utilidad, licenciado bajo GPL 3.

El código puede verse en: https://gist.github.com/axelei/dafd305213ed1b2655545f06edfbc905

# Programa para clonar prestashop
# Copyright Krusher 2015 - Licenciado bajo GPL3

paramfile="httpdocs/app/config/parameters.php"
extractDatabaseName="s/.*'database_name' => '\(.*\)'.*/\1/p"
extractDatabaseUser="s/.*'database_user' => '\(.*\)'.*/\1/p"
extractDatabasePassword="s/.*'database_password' => '\(.*\)'.*/\1/p"

if [ "$#" -lt 4 ]; then
  echo "Error: Se requieren 3 argumentos."
  echo "Uso: $0 dir_web_original dir_web_destino url_original url_destino"
  exit 1
fi

echo Traspasando de $1 a $2 \(urls: $3 -- $4 \)

databaseName=$(sed -n "$extractDatabaseName" $1/app/config/parameters.php)
databaseUser=$(sed -n "$extractDatabaseUser" $1/app/config/parameters.php)
databasePassword=$(sed -n "$extractDatabasePassword" $1/app/config/parameters.php)

echo Datos de la base de datos de origen: $databaseName / $databaseUser / $databasePassword

targetName=$(sed -n "$extractDatabaseName" $2/app/config/parameters.php)
targetUser=$(sed -n "$extractDatabaseUser" $2/app/config/parameters.php)
targetPassword=$(sed -n "$extractDatabasePassword" $2/app/config/parameters.php)

echo Datos de la base de datos de destino: $targetName / $targetUser / $targetPassword

if [[ -z "$databaseName" ]] || [[ -z "$databaseUser" ]] || [[ -z "$databasePassword" ]] || [[ -z "$targetName" ]] || [[ -z "$targetUser" ]] || [[ -z "$targetPassword" ]]; then
  echo "Error: Algunas de las variables no han sido extraídas, comprueba los errores y los directorios."
  exit 1
fi

echo URL de la instancia origen: $3
echo URL de la instancia destino: $4

read -p "Pulsa enter para continuar o CTRL+C para cancelar"
echo  "Procediendo con el traspaso."

echo Extrayendo base de datos
rm -f temp.sql
mysqldump -u $databaseUser $databaseName -p$databasePassword > temp.sql
echo Borrando base de datos objetivo
mysql -u $targetUser $targetName -p$targetPassword -e "drop database $targetName; create database $targetName"
echo Insertando la base de datos origen en la objetivo
mysql -u $targetUser -D $targetName -p$targetPassword < temp.sql
rm -f temp.sql

echo borra ficheros contenido antiguo
rm -Rf $2/*
echo copia ficheros
cp -r $1/* $2/

echo Configurando base de datos objetivo con los datos originales

sed -i "s/'database_name' => '\(.*\)'/'database_name' => '$targetName'/g" $2/app/config/parameters.php
sed -i "s/'database_user' => '\(.*\)'/'database_user' => '$targetUser'/g" $2/app/config/parameters.php
sed -i "s/'database_password' => '\(.*\)'/'database_password' => '$targetPassword'/g" $2/app/config/parameters.php

echo Configurando la nueva URL en la instancia destino

mysql -u $targetUser $targetName -p$targetPassword -e "update prstshp_configuration set value = '$4' where NAME IN ('PS_SHOP_DOMAIN', 'PS_SHOP_DOMAIN_SSL')"
mysql -u $targetUser $targetName -p$targetPassword -e "UPDATE prstshp_shop_url SET domain = '$4', domain_ssl = '$4' WHERE id_shop_url = 1;"
sed -i s/\\^$3\$/^$4$/g $2/.htaccess

echo Terminado.

Podría estar mejor hecho, en un lenguaje mejor o usar herramientas más avanzadas, pero es cómo me las tuve que apañar en un entorno que le faltaban muchas herramientas y comandos. Si te ha sido útil deja un comentario con tu experiencia.

Los ordenadores más importantes de la historia

A menudo encontramos entradas sobre ordenadores famosos y listas que incluyen algunos muy bonitos, que se vendieron mucho o que simplemente le gustan mucho al autor. Hoy quiero traer una lista de los que me parecen más importantes desde el punto de vista de innovación técnica, los que verdaderamente hicieron avanzar la industria con nuevas características que lo diferenciaran del resto.

También es verdad que un éxito comercial puede llevar a grandes avances arrastrando al resto, o simplemente tener el mérito de llevarlas a las masas. Veamos.

Continuar leyendo «Los ordenadores más importantes de la historia»

Tetrix

Resulta que yo de joven dibujaba. Me encantaban los tebeos, soy un gran admirador de Francisco Ibáñez o Forges, y hace un mogollón de años empecé una «obra» que nunca llegué a acabar de dibujar, pese a tener el guión escrito: TETRIX, una de tantas parodias sobre la famosa película Matrix (1999).

Rebuscando entre carpetas de mi disco duro llegué a estratos de 2003, y de ahí a unos escaneos de lo que quedó de esta obra, que dejo aquí para disfrute del personal. Incluso era una obra inclusiva antes de Netflix: tenía un personaje transgénero y todo (Trini). Bueno, más bien sería apedreada de hacerse famosa, pero eso ya no tiene mérito.

Sin más dilación aquí dejo los escaneos.

Continuar leyendo «Tetrix»

Cómo hacer café con distintos lenguajes de programación

El café forma parte íntimamente de la cultura de la programación, por algún motivo. Entiendo que se trata de que la cafeína estimula la concentración, aunque no me es posible corroborarlo ya que hace años que no tomo café con cafeína por el bien de mis compañeros y allegados, particularmente de mi esposa.

No obstante y como mero entretenimiento, voy a tratar de discurrir sobre cómo sería hacer café en diversos lenguajes de programación, inspiración que me ha venido de mi locuelo compinche de fechorías retroinformáticas Ilgrim. También del famosísimo comic de Toggl, por supuesto.

Continuar leyendo «Cómo hacer café con distintos lenguajes de programación»

La Enciclopedia Apócrifa

Bueno, la Frikipedia es historia. Mentiría si dijera que no lo echo de menos. No por la gente amenazándome por correo, sino por la cantidad de cosas graciosas que aparecían por ahí.

Por ello estoy preparando otro proyectito (de esos que se mueren al par de meses), llamado la Enciclopedia Apócrifa: https://www.apocrypha.ovh

¿Cómo me he atrevido a abrir un nuevo wiki con la que está cayendo? Fácil, con una censura previa draconiana. Por ello le auguro un futuro todo lo contrario de prometedor, pero que podrá preservar algunos de los contenidos que más me gustaron de la Frikipedia.

Algunos de los artículos que he importado/creado:

Aún faltan unos detallitos, traducciones y plantillas. Con todo, las aportaciones son más que bienvenidas. Que Dios me pille confesao.

Twittero del día: Cocolo

¿Para qué sirve Twitter? Para ofenderse de lo que gente la que no conocemos hace con su vida, por supuesto. Algunos individuos, no obstante, son tan desviados como para escribir cosas interesantes o información útil. El amigo Cocolo no es ninguno de ellos, simplemente hace lo que yo: decir tonterías.

Y como esta, hago homenaje al personaje que nos ocupa seleccionando los (que a mí me parecen) son sus mejores churretes.

Continuar leyendo «Twittero del día: Cocolo»

Homoxesuales

Hoy, en mi viaje a Alicante, he descubierto una verdadera batalla ideológica en las calles. En ella, una verdadera perla: la ideología homoxesual.

¿Religión fuera de las escuelas? ¿Ideología homoxesual fuera de las escuelas? Ustedes eligen. Yo desde luego me rindo ante este foro moderno, digno de las batallas dialécticas de Platón y Aristóteles.

La báscula para pesar la droga que todos estábamos esperando

Imagina que estás organizando la logística de tu negocio de narcóticos. ¿Cómo organizar las papelas para que cada lonchazo sea equitativo? Con el peso adecuado, por supuesto. Por ello he encontrado este producto que quiero mostraros.

Ojo que no sólo puedes pesar droga, también la recomiendan para pesar oro, plata, monedas, joyas o gemas, para cuando los clientes de tus camellos cobren el menudeo en prenda. ¿Qué más se puede pedir?

Ahora en serio, entiendo que este es el tipo de cosas que ocurren por usar traductores automáticos. Para los rezagados, la primera acepción de drug es simplemente «medicamento».  Por otro lado, el cacharro en cuestión no tiene mala pinta, si por algún casual quieres pesar «medicamentos», puedes verla en Amazon (permalink). Yo las drogas ni las he probado ni las volveré a probar.