Una cosa que nunca me gusto de Android y de hecho fue una de las cosas que mas me costo acostumbrarme fue la resolución de la pantalla, los iconos y letras inmensas, me parecía un desperdicio de pantalla el no poder cambiarle la densidad al LCD, en especial cuando tienes 11 centímetros (4.3 pulgadas). Luego de rootear el teléfono me puse a buscar la forma de alterar esto y conseguí una app que se llama LCDDensity for Root.

El programa funciona de maravilla, excepto que en el nightly build que estoy usando de CyanogenMod la barra del ADW.Launcher se muestra descontinua y desalineada si se asigna el valor de 190 o por debajo de este. Conseguí un script que usando el terminal de android nos permite asignar un valor arbitrario así que me propuse buscar cual era el valor entre 190 y 200 en el que la barra no se distorsionaba y luego de un par de intentos di con el numero 192. Este es el script:

#!/system/bin/sh
#Version 0.1
#Created by lithid

mount -o rw,remount /system
cd /system
sed "s/ro.sf.lcd_density = .*/ro.sf.lcd_density = $1/g" build.prop > tmp

mv tmp build.prop
echo -n "Do you want to reboot now? (y or n) > "
read list
if [ "$list" = "n" ] || [ "$list" = "N" ]
  then echo "No Eh? Must not wanna see your changes."
  mount -o ro,remount /system
  exit 1
elif [ "$list" = "y" ] || [ "$list" = "Y" ]; then echo "Rebooting Device"
  sleep 1 reboot
else
  echo "That is not a yes or a no"
  echo "Leaving"
  mount -o ro,remount /system
  exit 1
fi
exit

Este script fue escrito por @lithid y publicado en los foros de CyanogenMod.

Desde hace un par de años me llamo la atención como se colaron a internet los correos electrónicos de miles de internautas afectos al actual gobierno venezolano. Revisando los comentarios y usando google me pude dar cuenta que la fuente podría ser alguna comunidad web (foro) orientada específicamente a usuarios oficialistas, no veo otra forma de asociar una dirección de correo electrónica con una tendencia política.

Para duplicar estos resultados escribí un script que permite obtener estos emails y se adapta a cualquier comunidad que use phpBB como software para foros. echemos un vistazo.

TEMP_URL="/tmp/spider_url.tmp"
MAX_SLEEP=1
TMP_EMAILS="/tmp/spider_emails.tmp"
CONFIG=$1 EMAIL_OUTPUT="/tmp/emails.txt"

rm -f $TEMP_URL
rm -f $TMP_EMAILS
rm -f $EMAIL_OUTPUT

for COMUNIDAD in `cat $CONFIG`
  do COMUNIDAD_URL=`echo $COMUNIDAD | awk -F, '{print $1}'`
  PERFILMIN=`echo $COMUNIDAD | awk -F, '{print $2}'`
  PERFILMAX=`echo $COMUNIDAD | awk -F, '{print $3}'`
  PERFIL=$PERFILMIN
  while [ "$PERFIL" -lt "$PERFILMAX" ]
    do echo "http://$COMUNIDAD_URL/profile.php?mode=viewprofile&u="$PERFIL
    PERFIL=`expr $PERFIL + 1`
  done
done | sort -R | grep -i [a-z] >> $TEMP_URL

for URL_DE_PERFIL in `cat $TEMP_URL`
  do curl -s --referer `shuf -n1 $TEMP_URL` $URL_DE_PERFIL | grep -i "@" |\
  sed -e 's/</ /g' -e 's/>/ /g' -e 's/\:/ /g' -e 's/\=/ /g' -e 's/&amp;/ /g' |\
  sed s/\"/\ /g |\ tr ' ' '\n' | \ grep "@" | sort | uniq | tr 'A-Z' 'a-z'
  SEGUNDOS=$[ ( $RANDOM % $MAX_SLEEP )  + 1 ]
  sleep $SEGUNDOS
done >> $TMP_EMAILS cat `echo $TMP_EMAILS` |\
grep -i -E '[a-zA-Z0-9_]*@[a-zA-Z0-9]*\.*\.(com|edu|net|org|info|ve)' | sort |\
 uniq > $EMAIL_OUTPUT

El script toma información que es publica y la filtra hasta obtener una cadena que semejé una dirección de correo electrónico, como pueden ver en las siguientes imagenes el perfil de los usuarios son públicos y es predecible cual es la URL de estos perfiles ya que son numerados de forma secuencial.



Al ejecutar el script no arroja ninguna salida, tendríamos que hacer un cat a $EMAIL_OUTPUT como lo vemos aquí:

Desde hace un par de años me llamo la atención como se colaron a internet los correos electrónicos de miles de internautas afectos al actual gobierno venezolano, revisando los comentarios y usando google me pude dar cuenta que la fuente podría ser alguna comunidad web (foro) orientada específicamente a usuarios oficialistas, no veo otra forma de asociar una dirección de correo electrónica con una tendencia política

Si se fijan el el script el recibe un parámetro cuando lo ejecutamos, ese parámetro es la ruta a un archivo que va a contener la información de la URL del foro a escanear, el primer perfil a escanear y el ultimo perfil, todo separado por comas sin espacios en blanco (comunidad,minimo,maximo) el archivo se vería algo así:

www.noticierodigital.com/forum,1001,1010 aporrealos.com/forum,1000,1020

Para llegar a cual es el perfil numero del perfil del ultimo usuario registrado por demos jugar en nuestro navegador web con el parámetro u=17015 y cambiar ese numero por uno mas alto hasta que recibamos una pantalla de error del foro diciendo que ese perfil no existe.

Se puede asociar el perfil con el nick y por ende con el email.

Evitando Patrones. Si volvemos al script que publique, pueden ver que tome algunas medidas para evitar crear patrones el archivos de registro (log files) alterando el orden de los perfiles y cambiando aleatoriamente el tiempo a esperar entre visita y visita a los perfiles adicionalmente estoy enviando un 'referrer' perteneciente a estas comunidades con cada petición HTTP.

El producto final de este script es una lista de direcciones de correo, una dirección por linea y luce así:

ferminmittilo@gmail.com
ivanmarcanolopez@hotmail.com
jjguillen@cantv.net
monje902@hotmail.com
psichofra@hotmail.com
linux@hacks.org

Este script no funciona con todos los foros phpBB, algunos requieren una sesión valida para acedar la pagina de los perfiles. En la segunda parte de este script (que publicare en los próximos días) usare este mismo script pero implementando cookies, sesiones, proxies y recurriendo a la cache de algunos buscadores web.


UPDATE: El script corre sin problemas en el iPhone asi que se puede ejecutar desde cualquier parte que se tenga internet bien sea vía Edge, 3G o WIFI.

Aquí una captura de pantalla y un video de el script con algunas modificaciones después de ejecutarse:

Script para recolectar emails de foros web ejecutado desde el iPhone