Lo de bad enrolle se produce cuando el argumento pasado con -n no es válido, por alguna razon el e-nonce que produce ese bssid no es válido, si quieres pega aquí la salida del reaver.
Dicho esto te cuento lo del tema del dichoso mensaje del yad.
Bien, yo creaba dos variables llamadas $SEMAFORO_DETENER_ATAQUE y $SEMAFORO_DETENER_SCANEO , que equivalen cada una de ellas a la ruta de un archivo que solo existe en caso que detengamos el ataque o el scaneo, entonces cuando estamos haciendo la espera para acabar cada uno de ellos (scaneo y ataque) dentro del while compruebo en cada loop si existe o no el archivo para parar el respectivo proceso.
Si existe, pues deja de seguir atacando o escaneando y pasa a procesar los datos obtenidos hasta ese momento. Hasta ahí correcto, ahora te explico en que fallaba.
Cuando cieras el script, capturo el evento y antes de cerrar hago la funcion limpiar, que cierra procesos, elimina archivos de log, pone la interface en modo managed etc.... y en esta funcion creaba los dos semaforos, pero claro, lo unico que conseguia era detener el ataque o el escaneo, pero no el tratado de datos posterior, y ahi se producia la famosa ventana del yad, ya que al acabar la funcion limpiar no le habia colocado un exit.
Total, lo he solucionado creando un tercer semaforo, $DETENER_TODO , que tambien controloen cada loop, pero si existe no le digo que detenga y procese datos, ahora le digo que detenga y se vaya a la funcion limpiar, y al colocarle a esta el exit al final, pues ya cierra correctamente.
Espero haberme explicado bien, si quieres que te diga los cambios exactos para que lo pruebes, te los pongo o mejor te paso un enlace con el script que será más facil. Esa corrección no la he puesto en el post principal junto con las otras ya que es más compleja y seguro que más de uno se cepilla el script jejeje