PBC.sh: Botón WPS virtual para conexión WPS PBC en Linux

[h]PBC.sh: Emulador de botón WPS para conexiones WPS PBC desde distribuciones GNU_linux[/h]
https://media.giphy.com/media/l0HlEaWFwqrAIm5Uc/giphy.gif

¡Yepa! :slight_smile:
Comparto con vosotr@ un script chiquito y sencillo para hacer conexiones WPS PBC desde nuestro sistema GNU-Linux.
El script actúa como un botón PBC virtual.
Cuando lo ejecutamos se abre un intervalo WPS PBC de 120 segundos durante el cuál podremos conectarnos al PA pulsando su botón WPS (o su botón virtual desde su interfaz de gestión web)
El script automatiza los pasos vistos en:
[list=]
]Conectarse a una red utilizando el WPS PBC sin botón y desde Linux/]
] Como conectarse a una red WPA en linea de ordenes con nmcli/]
[/list]
Network manager (el gestor de redes para linux) no es compatible con el WPS.
Tienen un ticket abierto desde 2010 sobre WPS y no se ven ningunos avances (Bug 613071 - Wi-Fi Protected Setup (WPS) )
Estaba haciendo pruebas con el WPS PBC y me harté de repetir los pasos en consola
De ahí la idea de hacer este pequeño aporte sin pretensiones (y para desoxidar un poco al bash que lo necesitaba… :smiley: )
La conexión por WPS PBC se hace al instante y es muy cómoda. :slight_smile:
Sin embargo :
[list=
]
]Pequeña advertencia:
Sabéis que el
* WPS** en modo PIN es vulnerable y se suele decir que el WPS en modo PBC es seguro.
No es cierto y se puede explotar el intervalo WPS PBC para fomentar ataques Rogue AP (ejemplo: Un historia de Rogue AP by koala )
No hay que ser paranoia pero es importante saber que la seguridad del WPS PBC no es a prueba de balas: Cuando prensamos el botón de nuestro router un intruso podría conectarse./*]
[/list]
[h]Conexión WPS PBC con PBC.sh[/h]
https://www.wifi-libre.com/img/members/3/PBCsh_1.jpg
Es un script en bash que no requiere ningunas dependencias extras ya que trabaja con comandos y herramientas fundamentales
Hace falta un sistema un mínimo al día porque se emplean ordenes para systemd y se usa nmcli.
No funcionará por ejemplo en versiones de **Ubuntu **anteriores al 2015 (lo mismo con debian) .

Podéis descargar lo desde github en formato *.zip: master.zip
O mejor descargar lo ya listo para uso en consola con git

git clone https://github.com/kcdtv/PBC.git 

Os situéis en la carpeta que contiene el script

cd PBC

( Si lo has hecho con el paquete *.zip en lugar de usar git tendrás muy probablemente que situarte en “Descargas” para llegar al script :wink: )
Y lo ejecutéis con privilegios de administrador

sudo bash PBC.sh
  • Si tenéis una sola interfaz wifi todo se hace al instante automáticamente y podéis ya prensar el botón **WPS **de vuestro router.
    https://www.wifi-libre.com/img/members/3/PBCsh_2.jpg
  • Si tenéis varias interfaces tendréis que seleccionar una entrando su número
    https://www.wifi-libre.com/img/members/3/PBCsh_3.jpg
    Está en “inglés aproximativo” pero creo que “select interface” y “push button” se entienden y son las únicas cosas que hay que entender. :smiley: Es tan sencillo como prensar un botón, está es la idea.
    Tenéis entonces 120 segundos para prensar el botón WPS de vuestro router para efectuar la conexión.
    En este punto el script ha:
    [list=1]
    ]Redactado un fichero de configuración para wpa_supplicant ( /tmp/PBC.conf )/]
    ]Detenido Network manager. Es necesario para ejecutar **wpa_supplicant **y wopa_cli. Si estamos conectado se pierde la conexión WiFi, no se pierde la conexión por cable/]
    ]Inciado wpa_supplicant en tarea fondo/]
    ]Lanzado una petición de conexión WPS PBC mediante wpa_cli/]
    [/list]
    En cuanto prenséis el botón WPS del Punto de Acceso se efectúa la conexión y el script devuelve la llave WPA en consola
    https://www.wifi-libre.com/img/members/3/PBCsh_4.jpg
    Notar que el proceso se hace en dos tiempos.
    Se podría hacer en uno pero conviene hacerlo así:
    [list=1]
    *]Se obtiene la contraseña WPA con wpa_cli.
    Cuando tenemos la contraseña es que estamos conectados y solo nos haría falta negociar una IP para nevegar. Pero si lo hacemos ahora hay unas pegas:
  • La conexión se pierde si cerramos la consola
  • Network manager no se está ejecutando, no podemos gestionar ninguna interfaz normalmente y debe estar detenido para que se mantenga la conexión
  • El perfil creado (el fichero PBC.conf) solo vale para wpa_supplicant y no nos sirve para conectar desde Network Manager. /*]
    *]Importar los datos en Network Manager que reiniciamos
  • Así volvemos al estado inicial. Es lo que debe hacer un script: No dejar al usuario sin un servicio básico que se estaba ejecutando antes de ejecutar el script.
  • El perfil está creado con el password: Nunca tendréis que entrar la llave una sola vez. /*]
    ]Conexión con mcli
    nmcli (network manager command line) es un interprete de ordenes para Network Manager. Permite realizar la conexión final con Network Manager sin intervención del usuario/
    ]
    [/list]
    La descripción del proceso puede dar a pensar que se pierde tiempo.
    El tiempo transcurrido para conectarse del todo con una sola interfaz (así no hay que seleccionar nada y la conexión se hace del tirón) prensando el botón WPS del router un poco antes de ejecutar PBC.sh: menos diez segundos
    https://www.wifi-libre.com/img/members/3/PBCsh_5.jpg
    Se pierden un puñal de segundos por hacer la conexión completa en dos tiempos. Nada más. :cool:

¡Buenas noches! :slight_smile:

versión 0.2
[list=*]
]Sintaxis optimizada gracias a shellcheck/]
]No se invoca más a la función para limpiar cuando el script se parra por falta de privilegios de administrador. Ningún fichero se ha creado en este punto: No hace falta limpiar nada.
/
]
[/list]
Y para ser justo con todos los usuarios de wifi-libre pongo una chincheta a este tema ya que lo hago sistemáticamente cuando se trata de una creación de un miembro de nuestro comunidad.
vale para mi también, :smiley:

versión 0.3
[list=*]
]El perfil de red es ahora disponible para cualquier interfaz/]
]Añadido un modo de salida/]
[/list]