Como portar programas a GP2X (I)

Enero 7th, 2006

El portar un programa, ya sea un juego, un emulador o cualquier otro tipo a la GP2X puede ser una tarea muy sencilla o muy complicada dependiendo de que queramos portar.

En primer lugar, siempre que queramos portar algo a esta consola es necesario que dispongamos del código fuente del programa principal. Si no es así, será imposible portarlo y deberíamos hacer una adaptación, es decir, reprogramarlo de nuevo.

Una de las características deseables del código original es que utilice la libreria SDL, ya que está preinstalada en el entorno de la GP2X y por tanto será mucho más sencillo de portar. Otra característica deseable es que el programa esté pensado para ejecutarse bajo Linux, ya que este es el sistema operativo que gobierna la consola. Estas dos características no son imprescindibles, pero si que nos facilitarán mucho la vida a la hora de trabajar.

Como programa de ejemplo vamos a trabajar con Cygne-SDL, un emulador de la consola Wonderswan que funciona con la librería SDL y que resulta muy sencillo de portar.

El primer paso es instalar el entorno de compilación para la GP2X. Este procedimiento está muy bien explicado en el wiki: Getting started with GP2X development, así que no voy a repetirlo aquí. Se trata, basicamente, de instalar los programas y las librerías que nos permitirán convertir el código fuente del programa en ficheros ejecutables por nuestra consola.

Una vez instalado el entorno de compilación, lo primero que debemos hacer es comprobar que está correctamente instalado y que podemos generar ejecutables que funcionen correctamente. Uno de los más sencillos es el fichero de ejemplo de SDL que muestra una imagen en la pantalla de la consola.

Si este ejemplo nos ha funcionado correctamente, ya estamos listos para empezar a portar programas a la GP2X.

Guardado en Artículo, Programación | 1 comentario »

Ejemplos de tipos de spam

Noviembre 24th, 2005

Comentaba que ultimamente la cantidad de spam no detectado por mi lector de correo es bastante alta y está creciendo. Para saber porque se está produciendo esto, voy a analizar primero las diferencias entre los mensajes de spam que son clasificados correctamente y los que no.

Una vez tengamos ejemplos de como es cada uno de los tipos de spam, estudiaremos el algoritmo de clasificación e intentaremos ver porque estos correos no se están clasificando correctamente.

Leer el resto de la entrada »

Guardado en Artículo, Spam | 1 comentario »

Dropdowns relacionados en RubyOnRails

Noviembre 22nd, 2005

Si necesitamos tener dos dropdown relacionados, en el cual los valores del segundo dependan de cual esté seleccionado en el primero, podemos hacerlo mediante Ajax.

Supongamos las siguientes tablas:

countries
  id  INT
  name  VARCHAR

cities
  id INT
  country_id INT
  name VARCHAR

Queremos dos dropdown, de forma que los valores de las ciudades se carguen dependiendo del país seleccionado. Para ello, en el controlador creamos la función:

def list_cities
  @cities = City.find_all_by_country_id(@params["country_id"])
  @html = "<SELECT id=city_id name=group[city_id]>" 
  @html += "<OPTION selected value="">Select city</OPTION>" 
  @cities.each do |@city| 
    @html += "<OPTION value="#{@city.id}">#{@city.name}</OPTION>" 
  end 
  @html += "</SELECT>"
end

y en la vista:

<select id="group_country_id" name="group[country_id]"> 
  <option value="" selected>Select country</option></select>

<div id="city_id_container">
  <select id="group_city_id" name="group[city_id]">
    <option value="" selected>Select city</option>
  </select>
</div>

<%= observe_field "group[country_id]",
  :frequency => 0.25,
  :update => "city_id_container",
  :url => { :action => :list_cities },   
  :with => "'country_id='+value")
 %>

El truco está en el observe_field, que observa el dropdown de los países, y cuando su valor cambia hace una llamada al método list_cities pasando como parámetro el país seleccionado. Este devuelve el HTML que se inserta en el div con valor city_id_container.

Muy útil y limpio, aunque encontrar la documentación para hacer esto es un poco difícil, así que lo dejo aquí para quien lo necesite.

Guardado en Artículo, RubyOnRails | Comentarios desactivados en Dropdowns relacionados en RubyOnRails

Linkar DLLs con MinGW

Octubre 26th, 2005

Cuando tengo que programar bajo Windows suelo hacerlo en C++ con el compilador MinGW, básicamente porque estoy acostumbrado a hacerlo con gcc en Linux y me siento más cómodo con él que con Visual Studio, además del elevado precio de este.

Esto es un problema cuando necesitamos utilizar librerías externas que no han sido diseñadas para funcionar con MinGW. En este caso me he encontrado al ir a realizar una aplicación que utiliza el SDK de Canon.

Dicho SDK incluye el fichero CDSDK.LIB con el que hay linkar para poder llamar a las funciones que ofrece la DLL correspondiente. Este fichero está pensado para ser utilizado en Visual Studio, por lo que no funciona con MinGW. Por suerte hay una manera de convertirlo, veamosla en sencillos pasos:

  • Exportar las funciones a un fichero DEF con la ayuda de pexports: pexports cdsdk.dll > cdsdk.def
  • Ver todas las funciones que necesitamos importar y que no funcionan. Esta lista nos la da MinGW a la hora de linkar y veremos que las funciones acaban en @nn, donde nn es un número.
  • Modificar el fichero DEF añadiendo los @nn donde sea necesario
  • Convertir la DLL con dlltool (que creo que viene incluido en MinGW): dlltool —input-def cdsdk.def —dllname cdsdk.dll —output-lib libcdsdk.a
  • Copiamos libcdsdk.a a c:mingwlib
  • Ya podemos linkar nuestro programa con la libreria: gcc -lcdsdk main.cpp -o programa

Esto servirá también para otras librerías que queramos usar desde MinGW.

Guardado en Artículo, Programación | Comentarios desactivados en Linkar DLLs con MinGW

Hackeando auriculares Bluetooth

Octubre 17th, 2005

Estaba leyendo un artículo bastante interesante sobre Secuestro de auriculares Bluetooth, en el cual se explica como encontrar auriculares de este tipo y como podemos escuchar el audio que se está transmitiendo a través de ellos e, incluso, enviarles nosotros audio.

Esto significa que, por ejemplo, podriamos conectarnos al manos libres de un coche y empezar a hablar a la gente que está dentro o escuchar sus conversaciones. Evidentemente, esto es un grave riesgo para la intimidad.

Este fallo está provocado, basicamente, por el uso de claves por defecto por parte de estos auriculares (muchas veces utilizan 1234 o 0000), lo cual permite una conexión sin ninguna dificultad. En otros casos, fallos de implementación son los que abren las puertas a este tipo de espionaje. Por ejemplo, el hecho de no pedir confirmación cuando un nuevo dispositivo se asocia con el auricular.

He tenido la ocasión de probar personalmente este ataque y funciona perfectamente con bastantes modelos de manos libres. También estuve jugando con algunos móviles que implementaban Bluetooth y era sorprendente la cantidad de fallos de seguridad que incluían. Especialmente interesantes eran algunos modelos de Nokia que permitían conectarse a ellos y usarlos como un módem o como un terminal, pudiendo enviar comandos AT, con lo que teníamos control completo sobre el teléfono.

Teneis más información sobre estos ataques en las páginas de Triffinite, LOS EXPERTOS (s, si, en mayúsculas) en temas de seguridad en Bluetooth.

Guardado en Artículo, Seguridad avanzada | 1 comentario »

Hackeando impresoras

Septiembre 15th, 2005

Desde Shellsec veo un referencia a una artículo sobre hacking de impresoras, donde nos explican una serie de cosas curiosas como la manera de cambiar lo que muestra la pantalla de la impresora, como utilizar impresoras para hacer escaneos de red, sniffear los documentos que se van a imprimir…

Aparte de que el artículo está bastante bien, lo que me parece más interesante es la reflexión que provoca el hecho de que se están utilizando impresoras para fines que, probablemente, el administrador de la red no había imaginado nunca.

Y es que debemos tener mucho cuidado con todo aquello que conectamos a nuestra red, no solo los ordenadores, sino cualquier otro aparato: routers, impresoras, gateways,… pues todos ellos llevan un sistema operativo que suele ser accesible de forma sencilla y, muchas veces, son vulnerables ante fallos básicos.

El panorama ahora no parece muy malo, pero que pasará cuando IPv6 esté implantado y todo tenga su dirección IP: la nevera, la lavadora, el microondas, el vídeo,… ¿Necesitará todo el mundo aprender conceptos de seguridad informática? ¿Y si algún aparato tiene una vulnerabilidad, será posible actualizarlo? ¿Qué pasará cuando nuestra tele se ponga a hacer ataques DDoS al sitio de Microsoft? Ah, tantas dudas…

Guardado en Artículo, Seguridad avanzada | Comentarios desactivados en Hackeando impresoras

Lidiando con spyware y adware (IV)

Junio 30th, 2005

Sin duda, la manera más efectiva de detectar si tenemos spyware en nuestro ordenador es usando algún producto antispyware. Existen multitud de programas de este tipo, por lo que habrá que ver cual es el más efectivo de ellos y el que da mejor rendimiento. De todas maneras, siempre es aconsejable utilizar un par de ellos por si no detectan algún especímen que esté en nuestro ordenador, ya que ninguno de ellos detecta el 100% del spyware.

Leer el resto de la entrada »

Guardado en Artículo, Seguridad 101 | 3 comentarios »

Lidiando con spyware y adware (III)

Junio 28th, 2005

Despues de algunos pequeños problemas con el hosting de esta página que hicieron que ayer no estuviera accesible durante casi todo el día, seguimos con los artículos sobre spyware.

Sabiendo que es el spyware, como puede instalarse en nuestro ordenador y que efectos tiene nos queda saber como averiguar si tenemos algún programa de este tipo instalado en nuestro ordenador.

Leer el resto de la entrada »

Guardado en Artículo, Seguridad 101 | Comentarios desactivados en Lidiando con spyware y adware (III)

Lidiando con spyware y adware (II)

Junio 24th, 2005

Los fabricantes de spyware intentan instalar sus programas en nuestro ordenador a cualquier precio. Algunos de ellos, además, intentan dificultar la desinstalación mediante diversas técnicas, llegando incluso a modificar ficheros críticos, de forma que si son desinstalados pueden dejar nuestro sistema fuera de servicio. Y todo eso, ¿para qué?

Leer el resto de la entrada »

Guardado en Artículo, Seguridad 101 | Comentarios desactivados en Lidiando con spyware y adware (II)

Lidiando con spyware y adware (I)

Junio 22nd, 2005

Antes de entrar en materia debemos plantearnos qué es el spyware. El spyware (literalmente, programas espía) engloba a todos aquellos programas que espían de alguna forma al usuario, sin que este se de cuenta, para posteriormente enviar estos datos a una tercera persona, habitualmente empresas publicitarias, pero a veces también a usuarios con intenciones delictivas.

El adware (programas publicitarios) se ocupa de mostrar publicidad en nuestro ordenador, ya sea a través de ventanas emergentes o a través de la redirección de páginas en nuestro navegador.

Leer el resto de la entrada »

Guardado en Artículo, Seguridad 101 | Comentarios desactivados en Lidiando con spyware y adware (I)

« Entradas anteriores