Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

viernes, 28 de mayo de 2010

Cómo añadir nuestros ensamblados en el GAC a Visual Studio

Cuando desarrollamos una librería que deseamos que sea usada por muchas de nuestras aplicaciones o desplegamos una (o varias) que incluyen componentes, controles o funcionalidad disponible como, por ejemplo, la de una API, deseamos que esté disponible para nuestras aplicaciones. El GAC resulta, como bien sabéis, el lugar idóneo desde el que gestionar las distintas versiones de las DLLs de código administrado en nuestro sistema. Sin embargo, aunque registremos las DLLs en el mismo, estas no aparecen en el diálogo de Visual Studio para agregar una referencia a nuestro proyecto. Esto ocurre porque Visual Studio busca los ensamblados en rutas del tipo C:\Windows\Microsoft.NET\Framework\vx.y.z, pero aunque el CLR sea capaz de cargar ensamblados del GAC, este es independiente de nuestro IDE preferido.


Supongamos que ubicamos nuestras DLLs en la ruta C:\SomePath\LsAssemblies y las registramos en el GAC usando gacutil.exe. Cuando Visual Studio (en su versión x.y) busca los ensamblados al añadir una referencia lo hace a través de la clave de registro


HKLM\Software\VisualStudio\x.y\AssemblyFolders


Cada subclave representa una carpeta de ensamblados. Aunque el nombre no tiene la menor relevancia, el valor predeterminado debe contener la ruta completa a la carpeta que contendrá los nuestros. Por ejemplo:


HKLM\Software\Microsoft\VisualStudio\9.0\AssemblyFolders\LobosoftAssemblies \ (Default value): C:\SomePath\LsAssemblies


Como apunte final, cabría señalar que si en la ruta donde situamos las DLLs dejamos también los archivos para la depuración (PDB) y la documentación (XML), Visual Studio los usará cuando cargue la DLL para permitir la depuración en ese ensamblado y mostrar la documentación de Intellisense.


En la Visual Studio Gallery he encontrado también una extensión que nos ayuda a referencias DLLs del GAC. Su nombre es Muse.VSExtensions y permite mostrar un diálogo “Add GAC Reference” en nuestro Visual Studio 2010.

miércoles, 26 de mayo de 2010

Seguridad en WordPress


Tras el ataque sufrido en Lobosoft me he visto obligado a adelantar un poco la dedicación al blog (que tenía pensado incrementar, como ya dije, hacia mediados de junio), llevar a cabo una limpieza del mismo y actualizar, ya no la versión del mismo pero sí algunos plugins que podrían estar en el origen del ataque (fallo por mi parte al utilizar demasiados, aunque alguna de la funcionalidad extendidad del blog está basada, mucho me temo, en ellos).


El script que “me colaron” básicamente se encarga de permitir al atacante subir un archivo a la web con lo cual, dicho pronto y claro, la seguridad completa del sitio queda claramente comprometida. He estado buscando en Internet y parece que es un script genérico que ha sido instalado en numerosos servidores, sobre todo tipo de CMS y foros (y otras aplicaciones web), por lo que en sí no es más que una herramienta más que utilizar para atacar el sitio o usarlo como plataforma para fines oscuros y perversos. ;)


Uno de los blogs que he encontrado con el problema en cuestión es Brian's World, que muestra el código en cuestión. En mi caso no habían llegado ni tan siquiera a inyectarlo en uno de los archivos de Wordpress, sino que se encontraba replicado en varios archivos PHP con nombre similares (con un prefijo añadido) a los contenidos en un par de plugins y en el tema de Wordpress que da estilo al blog.
Dejo por aquí una extensa lista de referencias a la seguridad en Wordpress (algunas aplicables a otros CMS) que nunca está de más tener en cuenta. E incluso así, a pesar de lo que afirme nuestro amigo GigA, me temo que nada es demasiado seguro.


Feliz lectura.


Para saber más:


En castellano.




En inglés.

Más allá de WordPress.

La imagen que ilustra la entrada, que me ha encantado, es de Antivirus WordPress.

martes, 25 de mayo de 2010

Phoenicopterus

Hace apenas unos días comentaba en una entrada que me sentía con ganas y fuerzas de dar un empuje al blog. Tras un tiempo demasiado prolongado, durante el cual había permanecido inactivo por completo, con apenas alguna que otra entrada sin más contenido que vídeos o noticias que habían llamado mi atención, quería retomar un nivel de escritura aceptable, que tal vez no llegase al del verano de dos años atrás, pero sí que constituyese un estímulo para seguir adelante con el mismo. Sin embargo, es posible que en los últimos días, si habéis intentado al blog, lo hayáis encontrado deshabilitado, sin acceso o con un limitado, con problemas. El pasado sábado quise escribir una entrada en la que hablar, aunque fuese de forma somera, de la interesante charla que nos ofreció Bruno Capuano en Málaga mas no me fue posible. Tras un par de años de tranquilidad desde los últimos ataques al blog me encontré con que estaba siendo seriamente comprometido y usado como plataforma desde la que lanzar un ataque DoS contra otras máquinas. Mi gozo en un pozo, la cuenta desactivada hasta nueva orden y unos días en los que apenas podía permitirme el lujo de dedicarme a revisar el blog en los que este no ha estado disponible como habría sido de desear. Mis más sinceras disculpas a todos aquellos que pasaron por aquí buscando algo y tuvieron que irse como habían llegado.



La verdad es que el nuevo ataque me ha servido para reflexionar un poco en torno al blog, al sentido que tiene y al porqué de estas injerencias en su plácido transcurrir en la blogosfera. Por un lado, es cierto que hace un par de años sufrió un ataque en un periodo en el que no podía dedicar apenas tiempo al blog. Ahora ha ocurrido otro tanto, con la salvedad de que el blog llevaba ya mucho sin actividad y ha sido ahora, cuando intentaba retomarla, cuando ha ocurrido. Ya en las últimas semanas había notado ciertos repuntes bastante sospechosos en las visitas diarias al blog. El viernes, durante un descanso en el ecuador de la charla, le comentaba este hecho a un par de compañeros, así como mi suspicacia ante esta repentina afluencia a un blog apenas actualizado. La verdad es que no estaba equivocado.


¿Qué ha podido motivar el ataque? Bueno, no es necesario que exista una razón por la cual Lobosoft haya sido elegido, y ejercería de presuntuoso y “blogocéntrico” si afirmase que alguna oscura conspiración se ha centrado en este, mi blog, para derrocarlo. Sin embargo, me parece curioso que estando actualizado a la última versión estable de WordPress, con varios plugins de seguridad activados y sus ficheros de configuración de Apache medianamente bien estructurados haya sufrido un ataque de este tipo. A diario encuentro multitud de blogs WordPress (y otros CMS) sin actualizar, con la versión expuesta en el código HTML generado y que, pasando así el tiempo, no son atacados. Tal vez la temática del blog, que toca hasta cierto punto la seguridad informática, sea un aliciente para el hacker (más bien lammer, por los métodos usados) que haya accedido en una u otra ocasión. Ya os digo que no tiene que tratarse en sí mismo de un ataque centrado en el blog, pero si así fuese y el atacante estuviera leyendo estas líneas, me gustar decirle que, en primer lugar, no gano nada con el blog (es más, hasta la fecha me cuesta el dinero, aunque no me pesa: es una afición que me ofrece otros beneficios más allá de los pecuniarios) e intento ofrecer en él algunas píldoras de conocimiento que, espero, puedan ayudar a quienes lo necesiten. Y a mí mismo, por qué no decirlo, cuando esta memoria que tenemos nos falla en alguna ocasión y decimos: “oye, si yo escribí una vez algo de esto… voy a buscar en mi blog”, je, je, je. En segundo lugar, no soy un profesional de la seguridad informática. Informático, sí, y aficionado a la misma, intento que el blog sea un motor de aprendizaje y mejora de mis propios conocimientos. Por tanto, aunque haga mis pinitos en ella, con toda probabilidad muchos de los que leéis el blog superéis con creces mis propios conocimientos sobre el tema (me consta que algunos de quienes pasan o pasaron por aquí son grandes profesionales del campo de la seguridad, así que tomo sus visitas como un verdadero cumplido y como una invitación al reto de la autosuperación personal). Así las cosas, romper la seguridad del blog (basado en un CMS cuyo código está disponible libremente y con algunos plugins instalados que, me temo, han sido el origen de la actual invasión) supone un reto interesante pero prescindible. Si aun así, hipotético lector, te interesara atacarlo, me parecería un ejercicio interesante que cambiases la plantilla para poner un mensaje con lo membrillo que puedo llegar a ser y que yo intentase evitarlo, pero no que el sitio web sea usado para propagar pornografía, troyanos o para atacar a otros. Ahí la broma pasaría de castaño oscuro y la próxima vez puede que llegase a las autoridades. No por nada, sino porque creo que es de mal gusto y, además, compromete algo más allá del propio blog, que es mi propia credibilidad y mi responsabilidad civil con las leyes vigentes.


En resumen, después de la parrafada anterior: Lobosoft ha vuelto, esperemos que para quedarse. Aunque acciones como la descrita le quitan a uno un poco las ganas de seguir adelante como blogger (al menos de esta forma, con hosting propio), por otro lado inspiran las ganas de mejorar, de modo que la miraré desde esta perspectiva e intentaré que el blog vaya a mejor.


Si estáis leyendo esta entrada, habré sido capaz de restaurar el blog en la noche del martes (lo hago en tanto subo las imágenes y resto del material del blog) y dejarla programada. Mañana miércoles por la tarde espero poder publicar otra con el código del script que instalaron en el blog y un pequeño resumen sobre seguridad en WordPress.


Saludos.

jueves, 20 de mayo de 2010

Primeros pasos con Reflexil (2)

En la entrada anterior veíamos cómo era posible utilizar Reflexil como plugin de Reflector para modificar el valor de una variable, en concreto la que comprobaba nuestra aplicación de ejemplo para permitir el acceso del usuario a la misma. Hoy veremos cómo es posible incluir código propio en un ensamblado .NET para modificar el funcionamiento de la aplicación (inyección de código).

Deseamos que, cuando el usuario haya accedido al programa “crackeado” este realice una serie de acciones; en el ejemplo consistirá únicamente en mostrar un mensaje en pantalla pero podría tratarse de cualquier tipo de comportamiento inesperado. Para ello, creamos una DLL que contiene el siguiente código, la compilamos y la llevamos a la carpeta donde tenemos nuestra aplicación “ContaConta”.

[csharp]
namespace EjemploReflexil
{
public class Sorpresa
{
public static void Infectar()
{
MessageBox.Show("¡Pardillo!", "Sorpresa",
MessageBoxButtons.AbortRetryIgnore,
MessageBoxIcon.Exclamation);
}
}
}
[/csharp]

Partiremos del ejecutable que obtuvimos en la entrada anterior tras sustituir el valor de la contraseña por una cadena vacía (ContaConta.Patched.exe), incluyéndolo en Reflector. El usuario ahora espera utilizar el programa modificado para no tener que introducir contraseña alguna. Cuando el usuario introduce la palabra esperada (ninguna en este caso), la aplicación ejecuta un método que muestra un mensaje de bienvenida. Vamos a insertar una llamada a nuestro método Infectar() de la clase Sorpresa justo cuando esto ocurra.

Lo primero que debemos hacer es incluir una referencia a nuestro ensamblado (Sorpresa.dll).


Damos simplemente el nombre del ensamblado que, recordemos, se encuentra en la misma carpeta que nuestra aplicación:


Reflexil nos avisa de que los cambios que realizamos sobre el código no son visibles de inmediato en las ventanas de Reflector, así que debemos salvar los cambios y proceder a recargar la DLL. Podemos hacerlo desde el menú contextual o en las opciones que habrán aparecido en la zona de trabajo del plugin.


Tras recargar la DLL vemos que el ensamblado aparece ahora referenciado:



Abrimos el código del método Hola(System.String) para proceder a incluir en él la llamada a Sorpresa.Infectar(). Nos situamos sobre la primera instrucción y seleccionamos la opción de crear una nueva operación. Será una llamada (MSIL call) al método que deseamos, de modo que configuramos en el cuadro de diálogo el tipo de operación y de operando.


Seleccionamos, dentro del ensamblado Sorpresa, el método que deseamos llamar


y guardamos los cambios indicando que inserte la operación antes de la que teníamos seleccionada para que esta nueva sea la primera que se ejecute. Ahora guardamos los cambios y ejecutamos la aplicación con el nuevo parche.


Tras pulsar cualquier botón terminaría la ejecución del código inyectado, por lo que la aplicación prosigue con la del código preexistente:


En próximas entradas veremos cómo podemos reemplazar por completo el código fuente de una determinada clase del ensamblado directamente en C# o Visual Basic.NET mediante la opción “Replace all with code...

Primeros pasos con Reflexil (1)

Una de las ventajas de los compiladores que generan código intermedio es que las aplicaciones resultantes (ejecutables y librerías dinámicas) pueden desensamblarse con facilidad, reconstruyendo el código en su lenguaje original. Con .NET Framework esto es posible, incluso, obteniendo el código fuente descompilado al cualquier lenguaje de la CLI (Common Language Infrastructure), como bien sabréis, así que realizar un ejercicio de ingeniería inversa sobre sus ensamblados es algo, a priori (y sin ofuscador mediante), bastante ilustrativo.

Utilizando una de las herramientas que no puede faltar en la particular mochila virtual de cualquier desarrollador .NET, Reflector, es posible no solo descompilar el ensamblado sino incluso reconstruir un proyecto de Visual Studio que permita editarlo y volver a reconstruirlo. Sin embargo, podemos llegar más allá. Es posible, además, editar desde el propio Reflector un determinado ensamblado y modificar su funcionalidad utilizando el plugin Reflexil. Desarrollado por Sébastien Lebreton, se trata de un proyecto de código abierto que podemos incluir como dentro de los add-in de Reflector para extender su funcionalidad permitiéndonos alterar la funcionalidad de un determinado componente de la correspondiente aplicación ya sea inyectando código (en MSIL, C# o Visual Basic.NET) o modificando alguna de sus propiedades. He estado “jugando” un poco con el plugin y me ha gustado tanto que he decidido traerlo al blog aunque sea, de momento, con una introducción muy básica a algunas de las características que podemos encontrar en él.

Partimos de una aplicación realmente básica que simula un formulario de autenticación de usuarios que permitiría acceder a la misma. En nuestro ejemplo simplemente mostrará un mensaje indicando si el usuario introdujo la contraseña correcta o no. El sistema de protección es realmente rudimentario pero nos servirá a título de ejemplo para comenzar a familiarizarnos con Reflexil.


Si no lo hemos hecho antes, deberíamos bajarnos la última versión del plugin de su página oficial e instalarlo (simplemente descomprimirlo y agregarlo a Reflector a través de su menú View->Add-Ins).


Agregamos el ejecutable (o DLL) que deseamos analizar y modificar; en nuestro caso, ContaConta.exe. Si activamos el plugin (Tools->Reflexil vx.y ) veremos cómo, al acceder a un determinado método, campo o propiedad, aparecen diversas opciones que permiten modificar su tipo, los argumentos recibidos e, incluso, su comportamiento.



Por ejemplo, nuestra aplicación comprobaba simplemente si el usuario introducía el texto necesario para permitirle el paso. Una posible modificación sería eliminar esta palabra de paso. Si nos fijamos en las instrucciones en IL del método que se encarga de hacer la comprobación (el propio delegado que se suscribe al evento del clic de ratón sobre el botón Acceder) veremos que comienza situando en la pila de evaluación una referencia al objeto System.String que contiene la cadena a comparar (operación ldstr) para, a continuación, recuperar el valor que contiene el cuadro de texto donde el usuario introduce la contraseña y realizar una comparación entre ambas. Vamos a editar la cadena para sustituirla por una vacía. Para ello, accedemos al menú contextual de la primera instrucción pulsando de ella con el botón derecho del ratón y accedemos a la opción Edit. Veremos un pequeño cuadro de diálogo desde el que es posible editar el tipo de operación a realizar así como los argumentos con los que es llamada. Borramos de aquí el texto del argumento y aceptamos.


Tras ver cómo ha sido eliminado el valor del parámetro en la lista de argumentos, si queremos comprobar que el cambio ha tenido éxito debemos guardar el ensamblado. Para ello, en el árbol de ensamblados de Reflector pulsamos con el botón derecho sobre ContaConta para acceder al menú Reflexil->Save As… y le dejamos el valor predeterminado (ContaConta.Patched.exe).


Si ejecutamos ahora la aplicación y pulsamos simplemente en el botón de acceso veremos cómo nos deja pasar.


En la siguiente entrada veremos cómo inyectar código propio en un ensamblado .NET existente.

martes, 18 de mayo de 2010

Inserción de vídeos en WordPress MU

Hace unos días estuve haciendo unas pruebas para migrar Lobosoft a un sistema WordPress MU (la versión multiblog de WordPress que, además, fue con la que comencé la andadura de Lobosoft en un principio para pasar con posterioridad a la que utilizo ahora). Finalmente no me será necesario usarla, pero durante el proceso de configuración de la misma tuve que recordar viejos conocimientos además de ampliar la configuración de WordPress MU para permitir la inclusión del código HTML necesario para que la importación de las entradas que incluyen algún vídeo finalizase con éxito. De no hacerlo así, WordPress limpiaba literalmente el HTML de la entrada eliminando cualquier posibilidad de incluir vídeos de servicios como YouTube o Google Vídeo, por ejemplo.


WordPress lleva a cabo un análisis del HTML que incluimos en una determinada entrada a través de la variable $allowedposttags, un array incluido en el archivo kses.php dentro de del directorio wp-includes de nuestra instalación de WordPress (o WordPress MU, como es el caso del ejemplo). Dicho array contiene, como su nombre indica, las etiquetas HTML permitidas dentro de las entradas del blog. El formato de dicho array (que, a su vez, contiene a otros) es “nombre de etiqueta” => valor, siendo el valor un array sin contenido cuando la etiqueta es un atributo HTML y un array con valores cuando se trata de una etiqueta HTML con atributos. En resumen, se forma una colección de estructuras arbóreas que representan la estructura de un tag HTML. A buen seguro con un ejemplo queda todo más claro. Veamos cómo es definida en $allowedposttags la etiqueta del enlace (anchor):


[php]
'a' => array(
'class' => array (),
'href' => array (),
'id' => array (),
'title' => array (),
'rel' => array (),
'rev' => array (),
'name' => array (),
'target' => array()
)
[/php]


Resulta sencillo ver aquí la estructura de la etiqueta para un link, así como comprobar que no se permite el uso de mapas de imágenes en las entradas de WordPress (a menos que nosotros nos encarguemos de extender el array, por supuesto).


Así, para permitir la inclusión de vídeos en las entradas simplemente tenemos que ampliar el array principal definido para la variable $allowedposttags con el código siguiente:


[php]
'embed' => array (
'id' => array (),
'type' => array (),
'style' => array (),
'height' => array (),
'width' => array (),
'wmode' => array (),
'src' => array (),
'object' => array (
'height' => array (),
'width' => array ()
),
'param' => array (
'name' => array (),
'value' => array ()
),
)
[/php]


Sencillo, ¿verdad?

lunes, 10 de mayo de 2010

!301

Quienes conocéis el blog desde hace un tiempo os habréis dado cuenta de la bajada que se ha producido en la cantidad y calidad de las entradas que lo componen. Lobosoft nació casi sin querer, fruto de un nombre que había usado desde antes de comenzar incluso a estudiar informática de manera formal y que adopté cuando los ciudadanos pudimos contratar dominios “.es” (anteriormente el acceso era exclusivo para las empresas y la administración). Como un proyecto inesperado, tuvo un tímido arranque seguido por un crecimiento, creo, bastante notable. Subió de PageRank en unos meses, y durante un verano el ritmo de las entradas llegó a ser frenético, de un par o tres al día. Sin embargo, tal vez por esto, quizás por mi propia efusividad y, en los últimos tiempos, sin duda por la falta de tiempo y algo de desidia, las entradas comenzaron a tocar temas inesperados o ciertamente muy limitados en el tiempo, como vídeos curiosos, enlaces a entradas que me parecían interesantes o noticias que tienen una temporalidad muy marcada. De este modo, el blog sobre desarrollo y seguridad informática fue convirtiéndose en un cajón de sastre (y un tanto desastre) donde todo tenía cabida.


Durante los últimos meses el ritmo de las entradas ha bajado a una al mes y, generalmente, se trataba de algún vídeo que en ese momento me llamaba la atención. Algunos de ellos, lo habréis visto, hacen referencia a los que siempre cité como mis orígenes en la informática, que no son otros que los de muchos de vosotros: los 8 bits y, en particular, nuestro querido Spectrum. A día de hoy, llamadme nostálgico, me apasiona seguir aprendiendo sobre y con estos ordenadores que, creo, tanto tienen que enseñar. Sin embargo, mostrar vídeos no ha sido nunca la intención del blog ni me parece una experiencia especialmente enriquecedora por sí sola.


A todo lo anterior podríamos sumarle que en este tiempo otros dos blogs han venido a sumarse a mi colección (me gusta escribir y no solo de informática, claro) y, sobre todo, que este año he emprendido una nueva aventura comenzando a estudiar, simultaneando con el trabajo, una nueva carrera universitaria, lo que ha restado tiempo y sumado obligaciones a mi ya de por sí escaso tiempo de ocio, lo que ha repercutido negativamente en el blog.


Por último, cabría decir que, modestamente, el blog se ha portado bien en mi ausencia. El ritmo de visitas no ha bajado de las 150 ó 200 diarias, pero claro, este es uno de los problemas que he encontrado en Lobosoft hasta hoy. Salvando a algunos lectores habituales, los que tanto habéis enriquecido al mismo (y a mí mismo) con vuestros comentarios, Lobosoft ha sido estos años un blog destino de “paracaidistas”, de personas que llegaban a través de los buscadores intentando localizar una solución a alguno de sus problemas, la encontraban (o no) y se marchaban tan en silencio como habían llegado. Escribo en el blog con ese ánimo, el de ayudar (y ayudarme a mí mismo, constituye un respaldo magnífico para la memoria), pero creo –y esto me lo han confirmado los otros blogs que mencionaba más arriba- que lo que más pone en valor a un blog son sus lectores y las aportaciones que hacen al mismo. Por eso, me habría gustado que Lobosoft hubiera sido un poco más el proyecto de muchos, más que de mí mismo.


¿Es esto una despedida? La verdad es que no. Aunque se me pasó por la cabeza incluso cerrar el blog o trasladarlo a un servidor gratuito, poniendo el dominio en parking (la afición me cuesta unos cuantos euros al año) finalmente he decidido no hacerlo, de momento. Es posible que durante este año el blog muestre la publicidad que nunca he deseado incluir a menos que pueda retomar un ritmo de escritura adecuado. ¿Por qué? Si sigue abierto únicamente para ofrecer los contenidos del pasado lo que espero, al menos, es que no constituya una carga económica (no sé si llegará a sustentarse con publicidad pero sí espero, al menos, que se reduzca un poco el coste de mantenerlo). Si consigo mantenerlo como merece no lo haría pero porque entiendo que me está ofreciendo otras satisfacciones, de índole personal y profesional, que lo compensan con creces.


En cierto modo, esta entrada constituye un antes y un después en la historia del blog. Me consta que en otros momentos ha habido editoriales similares, con la intención de "obligarme" a seguir en la brecha y que no han constituido finalmente el motor necesario para conseguirlo. Tal vez ahora sea distinto. Posiblemente a día de hoy sean Lobosoft y la vuelta al pasado que barruntan mis últimas entradas en él un intento de aferrarme a esta afición que terminó por constituirse en mi labor profesional y que, ciertamente, tanto me ha aportado en lo personal.


Si estáis ahí, bienvenidos a esta, a un tiempo, conocida y nueva aventura.

sábado, 8 de mayo de 2010

Ciencia y brujería


I think, fundamentally, open source does tend to be more stable software. It’s the right way to do things. I compare it to science vs. witchcraft.


In science, the whole system builds on people looking at other people results and building on top of them.In witchcraft, somebody had a small secret and guarded it but never allowed others to really understand it and build on it. Traditional software is likewitchcraft. In history, witchcraft just died out.


The same will happen in software. When problems get serious enough, you can’t have one person or one company guarding their secrets. You have to haveeverybody share in knowledge.


Linus Torvalds.

jueves, 6 de mayo de 2010

Una de música retro

Siguiendo en la línea de las últimas entradas frikies, una de música: la ZX Spectrum Orchestra y algún otro clip más disponible en la red. ¡Que lo disfrutéis!















Para terminar con la música de los maravillosos Fairlight creados por el desarrollador sueco Bo Jangeborg:





lunes, 3 de mayo de 2010

Vídeo en el Spectrum

Buscando información sobre la última versión disponible de BASin (un IDE para desarrollar aplicaciones para Spectrum (en BASIC, que no hay que perder los buenos gotos) desde plataformas Windows que me encanta por su sencillez y flexibilidad) me he encontrado con una demostración de la capacidad de nuestro pequeño gran ordenador y lo que puede lograrse con unos recursos limitados y mucho ingenio: vídeo streaming en tiempo real, con sonido y a pantalla completa leyéndolo desde una tarjeta SD gracias al potente interfaz divIDE que me ha dejado completamente pasmado:




Más información en la web oficial: http://divideo.zxdemo.org/