Saltearse al contenido

Clave wifi con Bash (LIN/MAC)

#!/bin/bash
# Detectar sistema operativo
OS=$(uname)
if [[ "$OS" == "Darwin" ]]; then
echo "Sistema operativo: macOS"
SSIDS=$(networksetup -listpreferredwirelessnetworks en0 | awk -F': ' 'NR>1 {print $1}' | sed 's/^[[:space:]]*//')
for ssid in $SSIDS; do
echo -e "\nSSID: $ssid"
security find-generic-password -D "AirPort network password" -a "$ssid" -w 2>/dev/null
done
elif [[ "$OS" == "Linux" ]]; then
echo "Sistema operativo: Linux"
CONN_PATH="/etc/NetworkManager/system-connections"
if [ ! -d "$CONN_PATH" ]; then
echo "No se encontró el directorio de conexiones guardadas. ¿Usas NetworkManager?"
exit 1
fi
sudo grep -r -E '(^psk=|^ssid=)' "$CONN_PATH" | while read -r line; do
if [[ "$line" == *"ssid="* ]]; then
ssid=$(echo "$line" | cut -d'=' -f2)
echo -e "\nSSID: $ssid"
elif [[ "$line" == *"psk="* ]]; then
psk=$(echo "$line" | cut -d'=' -f2)
echo "Clave: $psk"
fi
done
else
echo "Sistema operativo no compatible."
exit 1
fi

Para ejecutarlo, crear el archivo wifipass.sh y, una vez creado, darle los permisos necesarios

Ventana de terminal
sudo chmod +x ./wifipass.sh

Luego, para ejecutarlo, basta con teclar:

Ventana de terminal
sudo ./wifipass.sh