Seguridad Wireless - Wifi
Sistemas operativos => Zona GNU/Linux => Mensaje iniciado por: vk496 en 24-12-2013, 15:25 (Martes)
-
Bueno, me estoy pelendo con el Bash estos ultimos dias, y no hay forma de conseguir lo que quiero...
El problema es que en un momento determinado de mi script, entro en un menu en el que el usuario tiene distintas opciones para poder desautentificar para conseguir el handshake de un AP. A su vez, antes de entrar en el menu, se ejecuta una funcion en el backround que se encarga de comprobar si el handshake ha sido capturado o no, y cuando se capturó, cerrarse a si misma y pasar al siguiente apartado (en mi caso, el siguiente apartado es webinterface). El problema de eso, es que todavía estaba abierto el menu, y no śe como poder cerrarlo para no crear problemas.
checkhandshakestatus=0
while [ "$checkhandshakestatus" = 0 ]; do
checkhandshake &
echo "¿SE CAPTURÓ el HANDSHAKE?"
echo " "
echo -e " 2) No (lanzar ataque de nuevo)"
echo -e " 3) No (seleccionar otro ataque)"
echo -e " 4) Seleccionar otra red"
echo -e " 5) Salir"
echo " "
echo -n ' #> '
read yn
case $yn in
2 ) capture; $DEAUTH ;;
3 ) conditional_clear; askclientsel; break;;
4 ) killall airodump-ng &>$linset_output_device; CSVDB=dump-01.csv; breakmode=1; selection; break ;;
5 ) exitmode; break;;
* ) echo "Opción desconocida. Elige de nuevo"; conditional_clear ;;
esac
done
cuando la función del backround verifica que se capturó el handshake, modifica la variable checkhandshakestatus a valor 1. Al haber un case dentro del loop, no hay ningun avance hasta que el usuario no haga algo, para volver a verificar el valor de checkhandshakestatus y poder salir...
La función que se encarga de comprobar el handshake es esta:
function checkhandshake {
sleep 4
until [ "$checkhandshakestatus" = 1 ]; do
if aircrack-ng $DUMP_PATH/$Host_MAC-01.cap | grep -q "1 handshake"; then
checkhandshakestatus=1
killall airodump-ng &>$linset_output_device
killall aircrack-ng &>$linset_output_device
fi
if [ "$checkhandshakestatus" = 1 ]; then
break # Se sale del loop
fi
sleep 0.6
checkhandshakestatus=0
done
webinterface # Se avanza al proximo apartado
exit # Se cierra esta funcion del background
}
He probado sacando el PID de las funciones, y matandola cuando se encuentra el handshake, pero no me ha funcionado, porque devuelve un mensaje que el read del siguiente apartado interpreta como respuesta, y me devuelve un error de entrada y salida del script....
Alguna idea? :-\
Salu2
-
una preguntita, y disculpa mi ignorancia pero, estas tratando de sacar el handshake con el aircrack?? no es con el airodump?, ahh y otra cosa tu funcion esta dentro del mismo script o esta en un script aparte, porque si esta aparte a lo mejor la variable no es visible
deberias poner un poco mas del script para entender mejor lo que deseas hacer, xD
saludos y suerte
-
El script está capturando el tráfico con airodump-ng, y para saber si se ha conseguido el handshake o no hago uso de aircrack-ng...
La función que quiero que se ejecute en background está dentro del script principal, y hago una llamada desde allí mismo.
El código de arriba es un fragmento del proyecto LINSET con el que estaba trasteando para ver si me salía, y es el que más cerca estaba de mi objetivo.
Quisiera implementar eso en vez de que el usuario elija una opción y tenga que ser llamada la función de forma normal, es decir, una comprobación constante en segundo plano.
Salu2
Solo sé que no sé nada...