#!/bin/bash # Configuración mac_fake="00:11:22:33:44:55" directorio_diccionarios="/home/sjd/diccionarios" # Colores verde="\e[32m" rojo="\e[31m" reset="\e[0m" # Variables globales interfaz="" # Control de Ctrl+C en el menú trap ctrl_c_menu INT ctrl_c_menu() { echo -e "${rojo}\n[!] Cancelado. Volviendo al menú...${reset}" } # Función para detener servicios function detener_servicios() { echo -e "${verde}[+] Deteniendo servicios...${reset}" systemctl stop NetworkManager.service 2>/dev/null systemctl stop wpa_supplicant.service 2>/dev/null killall dhclient wpa_supplicant 2>/dev/null } # Función para levantar servicios function levantar_servicios() { echo -e "${verde}[+] Levantando servicios...${reset}" systemctl start NetworkManager.service 2>/dev/null systemctl start wpa_supplicant.service 2>/dev/null } # Función para mostrar las interfaces disponibles function seleccionar_interfaz() { echo -e "${verde}[+] Buscando interfaces de red...${reset}" interfaces=$(iw dev | grep Interface | awk '{print $2}') echo -e "\n${verde}[+] Interfaces disponibles:${reset}" echo "$interfaces" | nl read -p $'\e[33m[?] Selecciona el número de la interfaz a poner en modo monitor: \e[0m' seleccion interfaz=$(echo "$interfaces" | sed -n "${seleccion}p") if [[ -n $interfaz ]]; then echo -e "${verde}[+] Poniendo la interfaz $interfaz en modo monitor...${reset}" ip link set $interfaz down || ifconfig $interfaz down iw dev $interfaz set type monitor macchanger -m $mac_fake $interfaz || ifconfig $interfaz hw ether $mac_fake ip link set $interfaz up || ifconfig $interfaz up detener_servicios echo -e "${verde}[+] Interfaz $interfaz lista en modo monitor.${reset}" else echo -e "${rojo}[!] Opción de interfaz no válida.${reset}" fi } # Función para restaurar la interfaz a modo managed function restaurar_interfaz() { if [[ -n $interfaz ]]; then echo -e "${verde}[+] Restaurando modo managed en $interfaz...${reset}" ip link set $interfaz down iw $interfaz set type managed ip link set $interfaz up fi levantar_servicios } # Función para seleccionar diccionario y ejecutar Wifite function iniciar_wifite() { echo -e "${verde}[+] Buscando diccionarios en $directorio_diccionarios...${reset}" diccionarios=$(ls $directorio_diccionarios/*.txt 2>/dev/null) if [[ -z "$diccionarios" ]]; then echo -e "${rojo}[!] No se encontraron diccionarios.${reset}" return fi echo -e "\n${verde}[+] Diccionarios disponibles:${reset}" echo "$diccionarios" | nl read -p $'\e[33m[?] Selecciona el número del diccionario: \e[0m' seleccion_diccionario diccionario=$(echo "$diccionarios" | sed -n "${seleccion_diccionario}p") if [[ -n $diccionario ]]; then echo -e "${verde}[+] Ejecutando Wifite con $diccionario...${reset}" trap ctrl_c_menu INT # Reestablece captura Ctrl+C para no salir del menú wifite --dict "$diccionario" else echo -e "${rojo}[!] Selección no válida.${reset}" fi } # Función para ejecutar Airgeddon function iniciar_airgeddon() { echo -e "${verde}[+] Iniciando Airgeddon...${reset}" trap ctrl_c_menu INT sudo airgeddon } # Menú principal while true; do echo -e "\n${verde}========= MENÚ PRINCIPAL =========${reset}" echo "1) Poner interfaz en modo monitor" echo "2) Restaurar interfaz y servicios" echo "3) Iniciar Wifite" echo "4) Iniciar Airgeddon" echo "5) Salir" echo -e "=====================================" read -p $'\e[32m[+] Elegí una opción: \e[0m' opcion case $opcion in 1) seleccionar_interfaz ;; 2) restaurar_interfaz ;; 3) iniciar_wifite ;; 4) iniciar_airgeddon ;; 5) echo -e "${rojo}[+] Saliendo...${reset}"; exit ;; *) echo -e "${rojo}[!] Opción inválida${reset}" ;; esac done