categoría: Android | tags: android, baseband, cyanogen, motorola defy, wifi | 2 comentarios »
El pasado día 9 de Octubre de 2011 el smartphone Motorola Defy fue incluido definitivamente en el proyecto CyanogenMod. La versión 7.1 es la primera soportando Motorola Defy oficialmente.

Captura detalles Motorola Defy con Cyanogen 7.1
Tas replicar el procedimiento de la guía de instalación he conseguido ejecutar CyanogenMod 7.1 en mi Motorola Defy sin ningún contratiempo. La instalación la realicé a partir de la rom 3.4.2 131-003 Orange Deblur rooteada (procedimiento que seguí para su rooteo). Las primeras pruebas fueron satisfactorias, el sistema es estable y más fluido que con la anterior rom. Sin embargo salió a la luz un problema con la conexión WiFi. En condiciones de uso “estándar” la conexión funcionaba correctamente. Al hacer uso intensivo de la red WiFi, como por ejemplo en la sincronización de música a través de Spotify o llamadas vía Skype, la conexión se perdía. Para recuperar dicha conexión era necesario desactivar la comunicación WiFi en el móvil y reactivarla.
Tras consultar las fuentes habituales (xda-developers y HTC manía) parecía que dicho problema era algo aislado. De modo que si no es un problema de la rom, debería ser de algún tipo de parámetro personalizable. Tras repetir los wipes de cache, dalvik, SD, etc. el problema persistía por lo que se me ocurrió que podría ser que a mi anterior rom, la cual no era oficial, le hubiese cambiado también el firmware de radio, encargado de las comunicaciones inalámbricas móviles y WiFi. En ese punto recordé que Cyanogen 7.1 incluye la utilidad Defy Baseband Switcher que permite cambiar la banda base de la radio. La banda base que tenía seleccionada por defecto era “Europa Central Hong Kong, Taiwan, Saudita, Francia, Nóridocos 3.4.x, Reino Unido 4.5.1-85“. Tras seleccionar “Europa Central RT_3.4.2-145” y reiniciar el sistema, pasé ha realizar una sincronización de música con Spotify y el problema de pérdida de conexión WiFi se había solucionado.

Captura Baseband Switcher
categoría: Android | tags: android, motorola defy, root, rootear, superoneclick, vodafone | 7 comentarios »
El Motorola Defy que está comercializando Vodafone actualmente viene cargado de utilidades de Motorola que seguramente nunca utilizaré. Para deshacerme de ellas, hacer overclocking, underclocking, cambiar la ROM o instalar algunas aplicaciones cómo Titanium Backup o AdFree necesito obtener acceso root en el sistema Android.
Read the rest of this entry »
categoría: Linux | tags: apt-get, apt-spy, debian, mirror, repositorio, sources.list | sin comentarios »
Hasta hoy era usuario de netselect-apt para hacerme con el servidor (o repositorio) con mayor ancho de banda posible para las actualizaciones de paquetes de Debian. Digo hasta hoy ya que me encontré con que el repositorio que estaba usando (http://mirrors.nfsi.pt/debian/) dejó de funcionar. A raíz de eso me dispuse a ejecutar el “nectselect-apt -n unstable” de rigor pero el resultado no era el esperado. El sources.list generado contenía una línea sin especificar servidor:
deb unstable main contrib non-free
Tras buscar unos minutos encontré la alternativa a netselect-apt: apt-spy. Su funcionalidad prácticamente la misma, testea mirrors de Debian y genera un archivo sources.list con el servidor de mayor ancho de banda.
Read the rest of this entry »
categoría: Linux | tags: debian, dhcp, pxe, tftp | sin comentarios »
Hace un par de días compré un pequeño PC para usar de servidor (streaming de música, ssh tunneling, sftp…). El sistema operativo que traía instalado era Ubuntu 9.10. Además de ser una versión “ya algo vieja” venía un tanto mal instalada (sin particiones, sin swap), por lo que la mejor opción era reinstalar el sistema operativo. Por tradición me decidí a instalar Debian. El impedimento era que esta máquina no cuenta con lector de CD/DVD y descartando la opción de instalar por USB, me quedé con la opción más cómoda: Instalar a través de red local mediante PXE.
Si bien a priori la configuración de un servidor DHCP y TFTP necesarios para iniciar con PXE podría parecer engorrosa, gracias a éste manual conseguí realizar la instalación sin topar ninguna dificultad. He añadido a mi wiki un resumen del proceso modificando algún detalle (ver la página de debian en el wiki).
categoría: Linux | 3 comentarios »
He abierto un wiki que me servirá como repositorio de “chuletas”. En principio el contenido que tiene es sobre Linux pero no descarto seguir añadiendo otros apartados, como pueden ser otros sistemas operativos, PHP, seguridad, etc.
Principalmente es para mi uso personal pero lo hago público por si le pudiese resultar útil a alguien en algún momento.
categoría: Linux | tags: cursores, debian, gcc, mount.ntfs-3g, ntfs, virtualizacion, vmware | 7 comentarios »
La instalación de VMware Server 2.0.2 en Debian SID con kernel 2.6.32 cuenta con varios impedimentos que dificultan su puesta en marcha. Tras leer diversas fuentes de información he conseguido solventar todos estos problemas. A continuación listo las dificultades con las que me topé y cómo las he solucionado:
Read the rest of this entry »
categoría: Linux | tags: comprimir, Linux, multipart, rar | sin comentarios »
Una pequeña chuleta de cómo crear un archivo comprido rar multipart en una terminal Linux:
rar a -r -s -v51200 mi_nuevo_archivo_multipart.rar "directorio_que_quiero_comprimir/"
Los parámetros usados para comprimr el archivo rar en varias partes en Linux son los siguientes:
a: Añadir archivos (comprimir).
r: Añadir directorios recursivamente.
s: Archivo sólido. Copia todos los archivos a uno único antes de comprimir, aumentando así el ratio de compresión.
v: Divide el archivo comprimido resultante en partes de 50 MB cada uno (expresado en KB).
categoría: Desarrollo web | tags: funcion, php, programacion, simplexml, xml | 2 comentarios »
Trabajar con archivos XML en PHP es realmente cómodo gracias a SimpleXML. Por desgracia los archivos .xml que genera no son “human-readable”. En el caso de necesitar consultar algún dato manualmente en el archivo .xml, nos encontraremos con que no cuenta con saltos de línea y por extensión está sin indentar.
Para solucionar este problema he usado esta pequeña función que se encarga de formatear un archivo XML.
function formatXml($archivoXml) {
$doc = new DOMDocument();
$doc->preserveWhiteSpace = false;
$doc->formatOutput = true;
$doc->load($archivoXml);
$doc->save($archivoXml);
}
categoría: Linux, Seguridad informática | tags: bash, captcha, gocr, ocr, seguridad | sin comentarios »
Los captchas (Completely Automated Public Turing test to tell Computers and Humans Apart) están ampliamente extendidos hoy en día. Cualquier aplicación web con cierto nivel de seguridad que permita entrada de datos a usuarios no autentificados debería contar con un captcha para dificultar ataques de fuerza bruta. La mayoría de los captchas suelen ser visuales, en ellos se ha de escribir en un campo de texto los caracteres mostrados en una imagen. Pero el hecho de tener un captcha en una aplicación no significa que automáticamente estemos a salvo de ataques de fuerza bruta.
Un captcha visual débil resulta sencillo de romper gracias a programas de reconocimiento óptico de caracteres (OCR). Un captcha visual que resulte difícil de crackear debe contar con diferentes fuentes tipográficas, tamaños, colores, caracteres distorsionados y ruido en el fondo.

Ejemplo de un buen captcha
En esta entrada me gustaría mostrar lo sencillo que resulta el crackeo de un captcha débil. Para ello voy a exponer un caso real, omitiendo la dirección de la página web en cuestión. Se trata de una página que permite a sus usuarios hacer pública cierta información en forma de código. Este proceso se realiza anonimamente y sin ningún tipo de autentificación, tan sólo cuenta con el siguiente captcha:

captcha debil que romperemos
A simple vista se aprecia que el captcha no aporta gran seguridad gracias a sus caracteres perfectamente definidos.
Ejemplo práctico de crackeo de captcha débil
Para crackearlo usaremos el programa GOCR, el cual es open souce y en Linux se puede instalar desde las fuentes habituales.
Este programa requiere un “entrenamiento” previo para reconocer los caracteres, por lo que será lo que hemos de hacer en primer lugar:
mkdir ocrdb
gocr -d 2 -p ./ocrdb/ -m 256 -m 130 captcha.png
La ruta ./ocrdb/ será en dónde se guardarán los datos que genere gocr a partir de su “entrenamiento”, este directorio lo tenemos que crear manualmente. ‘captcha.png’ es el captcha que crackearemos. Al ejecutar este comando, nos encontraremos con lo siguiente:

Entrenamiento de gocr
En esta captura vemos como gocr nos pregunta por la primera letra, en este caso una “V”. La letra por la que nos pregunte en cada momento estará pintada con corchetes ‘#’, las demás con ‘O’. Al introducir la letra “V” continuará con las siguientes letras del captcha. Este proceso lo tendremos que repetir cuantas más veces mejor, hasta que gocr sea capaz de entender el captcha sin nuestra ayuda. Por lo que tendremos que ejecutar el comando bastantes veces, para agilizar el proceso podemos usar el siguiente script:
#!/bin/bash
while [ 1 ]; do
wget -O captcha.png http:/servidor-ejemplo.com/captcha_gen.php ;
gocr -d 2 -p ./ocrdb/ -m 256 -m 130 captcha.png ;
done
Cuando gocr sea capaz de descifrar la mayoría de captchas por si mismo pulsamos ctrl+c para detener el script. Lo siguiente sería poner a prueba el programa:
gocr -p ./ocrdb/ -m 256 -m 2 captcha.png
Este sería el método general para usar gocr, pero en el ejemplo que he propuesto es poco útil. Vamos a crear un script que se encargue del crackeo del captcha y del envío de nuestros códigos a la página con wget:
#!/bin/bash
# este será el código que se le enviará a la web
miCodigo='XPEYWZA-002'
# urls de la página. La general y la que recibe los datos por POST
url='http:/servidor-ejemplo.com'
postUrl='http:/servidor-ejemplo.com/add-code.php'
# rutas temporales de trabajo
dirActual=`pwd`
dirTrabajo='/tmp/captcha'
# si existe el directorio temporal lo borramos
if [ -d "$dirTrabajo" ]; then
rm -Rf $dirTrabajo
fi
mkdir $dirTrabajo
cd $dirTrabajo
# hacemos una primera petición a la web guardando cookies
wget --save-cookies $dirTrabajo/cookies.txt --keep-session-cookies \
-r $url
# renombrarmos el captcha, realizamos el OCR y eliminamos los espacios en blanco
mv captcha.php captcha.png
captchaResuelto=`gocr -p $dirActual/ocrdb/ -m 256 -m 2 captcha.png`
captchaResuelto=${captchaResuelto/ /}
echo 'CAPTCHA RESUELTO:' $captchaResuelto
# envíamos por POST el código a añadir y el resultado del captcha,
# teniendo en cuenta las cookies y datos de sesión
wget --post-data="add=$miCodigo&captcha_code=$captchaResuelto" \
--keep-session-cookies --load-cookies $dirTrabajo/cookies.txt \
$postUrl
cd $dirActual
Este script lo guardaremos el el mismo directorio en el que tenemos “ocrdb/”. Le podríamos añadir algunas comprobaciones de respuesta de la web, algún bucle para repetir el envío, ejecutarlo cada X tiempo vía crontab, etc. Pero eso se sale de las pretensiones de esta entrada.
Nota: Las urls de los scripts están mal formadas intencionadamente (http:/) para que el resaltador de código no las incluya como enlaces.
categoría: Desarrollo web, Linux | tags: eclipse, php, xdebug | sin comentarios »
Tras la instalación y configuración de Xdebug para el IDE Eclipse PDT, me encontré que a la hora de lanzar el debug de una aplicación PHP el debug no se llevaba a cabo. El proceso permanecía en el 57% con el mensaje “Waiting for Xdebug session“.
Dicho error es producido por la configuración por defecto de java en Debian. Al comprobar los servicios a la escucha, el puerto 9000 (eclipse) está escuchando sobre ipv6:
netstat -anp -t tcp | grep 9000
la salida de netstat nos devuelve:
tcp6 0 0 :::9000 :::* LISTEN 4390/java
Para solucionar dicho problema será necesario modificar el siguiente archivo:
/etc/sysctl.d/bindv6only.conf
Localizar la siguiente línea:
net.ipv6.bindv6only = 1
sustituirla por esta que sigue:
net.ipv6.bindv6only = 0
a continuación ejecutar:
sysctl -p /etc/sysctl.d/bindv6only.conf
por último reiniciar Eclipse.