#!/bin/bash

# Ruta del punto de montaje donde se guardarán los archivos
PATH_FILE="/mnt/dw/Evidencias180725"

INTERFAZ_ORIG="wlan0"           # Cambia si tu interfaz tiene otro nombre
TIEMPO_CAPTURA=120              # Tiempo en segundos para capturar
SALIDA="$PATH_FILE/captura_wifi"
FORMATO="csv"
FILTRO_CSV="${SALIDA}-01.csv"   # Archivo CSV de salida

# Verifica si el directorio existe
if [ ! -d "$PATH_FILE" ]; then
    echo "El directorio $PATH_FILE no existe. Creándolo..."
    mkdir -p "$PATH_FILE"
fi

# Detener servicios que interfieren
echo "Deteniendo procesos que interfieren..."
sudo airmon-ng check kill

# 1. Intenta activar modo monitor
echo "🔧 Activando modo monitor en $INTERFAZ_ORIG..."
sudo airmon-ng start "$INTERFAZ_ORIG" > /dev/null

# Verifica si se creó wlan0mon, si no, usar wlan0
if ip link show "${INTERFAZ_ORIG}mon" > /dev/null 2>&1; then
    INTERFAZ_MON="${INTERFAZ_ORIG}mon"
    echo "Interfaz en modo monitor: $INTERFAZ_MON"
else
    echo "No se creó ${INTERFAZ_ORIG}mon. Usando $INTERFAZ_ORIG directamente en modo monitor manual..."
    INTERFAZ_MON="$INTERFAZ_ORIG"
    sudo ip link set "$INTERFAZ_MON" down
    sudo iw "$INTERFAZ_MON" set monitor control
    sudo ip link set "$INTERFAZ_MON" up
fi

# 2. Ejecuta airodump-ng
echo "📡 Iniciando captura con airodump-ng en $INTERFAZ_MON durante $TIEMPO_CAPTURA segundos..."
sudo timeout "$TIEMPO_CAPTURA" airodump-ng "$INTERFAZ_MON" --write "$SALIDA" --output-format "$FORMATO"

# 3. Detiene modo monitor si se creó una interfaz mon
if [[ "$INTERFAZ_MON" == "${INTERFAZ_ORIG}mon" ]]; then
    echo "Deteniendo modo monitor en $INTERFAZ_MON..."
    sudo airmon-ng stop "$INTERFAZ_MON" > /dev/null
else
    echo "Restaurando $INTERFAZ_MON a modo managed..."
    sudo ip link set "$INTERFAZ_MON" down
    sudo iw "$INTERFAZ_MON" set type managed
    sudo ip link set "$INTERFAZ_MON" up
fi

# 4. Validar existencia del archivo
if [ ! -f "$FILTRO_CSV" ]; then
    echo " No se encontró el archivo $FILTRO_CSV. La captura falló o no se detectaron redes."
    exit 1
fi

# 5. Extraer resumen del CSV
echo ""
echo "Resumen de redes detectadas:"
echo "BSSID, Canal, Potencia, ESSID"
awk -F',' 'NR>1 && $1 ~ /([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}/ && $14 != "" {
    print $1 "," $4 "," $8 "," $14
}' "$FILTRO_CSV" | sed 's/ *$//g'

echo ""
echo "Clientes detectados (MAC Estación -> BSSID):"
awk -F',' '/Station MAC/ {exit} NR>2 && NF > 5 && $1 ~ /([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}/ {
    print $1 " -> " $6
}' "$FILTRO_CSV"

echo ""
echo "Captura y análisis finalizados. Archivo generado: $FILTRO_CSV"
