El libre pensamiento para un internet libre

No estas registrado.  

Anuncio

Wifi-libre.com: El libre pensamiento para un internet libre / Regístrese ahora

#1 11-10-2017 18:40:24

kcdtv
Administrator

Registrado: 14-11-2014
Mensajes: 4,486

Obtener llave WPA con PIN WPS (sin modo monitor ni reaver) desde Linux

Obtener llave WPA con PIN WPS (sin modo monitor ni reaver) desde Linux

¡Muy buenas a [email protected]! smile
Hoy les voy a mostrar cómo hacer una conexión WPS con un PIN para obtener la llave WPA de un punto de acceso .
El procedimiento a seguir se ha explicado en otros temas  pero me parecía útil hacer una especie de ficha técnica fácil de consultar sobre este punto preciso. 
  Los pasos descritos a continuación valen para todas las distribuciones GNU-Linux y incluso en "sistemas basados en linux" como Android (se necesitan derechos de administrador) o OpenWRT/LEDE

  1. A nivel de "software" usaremos wpa_supplicant (y su comando interactivo wpa_cli). Ambos son presentes por defecto en todas las distribuciones GNU-Linux)

  2. A nivel de "hardware" nos vale cualquier interfaz wifi reconocida (no hace falta que sea compatible modo monitor) 

  Voy a usar una AWUS036ACH (su chipset rtl8812au no tiene soporte oficial) con drivers sin modo monitor (drivers versión 5.2.9)
  Para que quede muy claro que el modo monitor (y reaver o bully) no es(son) necesario(s).

Chequeo previo
  1. wpa_supplicant:
    Sin wpa_supplicant no te puedes conectar a redes WPA (o por WPS) así que [email protected] los sistemas linux tienen a wpa_supplicant
    Una forma de verificarlo sería hacer en consola

    kcdtv:~$ sudo which  wpa_supplicant
    /sbin/wpa_supplicant

    Se obtiene la ruta del ejecutable wpa_supplicant atestando así de su instalación en nuestro sistema operativo.

  2. interfaz wifi:
    Detectar las interfaces disponibles se puede hacer con iw
    wps_pin_1.jpg
    Usaré mi interfaz wifi USB (wlan1) dejándola en modo managed (el modo "normal": Para conectarse y navegar)

Fichero de configuración para wpa_supplicant

Copiar el bloque de código que sigue:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root
update_config=1

Pegarlo en un archivo de texto en blanco y guardarlo en un sitio conveniente (debéis saber dónde está exactamente para usarlo luego).
Por convención deberías ponerle una extensión *.conf

wps_pin_2.jpg

Mi fichero se llama redcasa.conf y lo he puesto en una carpeta llamada "WPS".

kcdtv:~/WPS$ readlink -f redcasa.conf
/home/kcdtv/WPS/redcasa.conf

La ruta hacía mi fichero es /home/kcdtv/WPS/redcasa.conf (se puede escribir ~/WPS/redcasa.conf )

Detener procesos conflictivos

El problema numero uno se llama network manager. El gestor de redes para linux no embarca soporte WPS y entra sistemáticamente en conflicto con los comandos wpa_supplicant que ejecutamos.
Así que la primera cosa  a hacer es detener network manager
La forma limpia de hacerlo es empelando system.d

sudo systemctl stop network-manager

Luego "rematamos" los eventuales procesos molestos con kill

sudo kill dhclient wpa_supplicant

wps_pin_3.jpg

La conexión por cable no se pierde, la conexión por wifi sí y el gestor de redes no gestiona nada.

Consola 1:  Ejecutar wpa_supplicant con el fichero de configuración

Abrir una consola para ejecutar wpa_supplicant indicando la interfaz wifi a emplear (-i <inetrfaz>) y la ruta hacía el fichero de configuración que acabéis de redactar (-c <ruta/fichero/conf>)
En nuestro ejemplo:

sudo wpa_supplicant -i wlan1 -c /home/kcdtv/WPS/redcasa.conf 

La consola devuelve un mensaje de éxito:

wps_pin_4.jpg

La dejamos abierta para que corre el proceso en segundo plano todo el tiempo. Si la cerramos no podremos hacer nada. 

Consola 2: Conexión mediante PIN WPS con wpa_cli

Abrimos otra consola y lanzamos wpa_cli

  1. sudo wpa_cli -i wlan1

    Estamos en modo interactivo y podemos entrar comandos al vuelo

  2. Pedimos un escaneo para copiar el bSSID de nuestra red:

    scan
  3. miramos el resultado con

    scan_results

wps_pin_5.jpg

Ahora copiamos el bSSID para usar lo con nuestro PIN en la linea de ordenes que sigue (a ejecutar en nuestra consola wpa_cli):
En mi caso:

wps_reg 00:C0:CA:85:32:E2 40899336

Fácil: wps_reg + bSSID + PIN.
Podréis ver de inmediato actividad en ambas consolas:

wps_pin_6.jpg

La conexión se hace al instante.
El mensaje en verde significa que hemos obtenido la llave 

Conclusión: Mirar la llave en el fichero *.conf

Podéis parrar los procesos en consolas con < Ctrl+C >:  Ya tenéis la llave. wink

cat /ruta/fichero/conf

wps_pin_7.jpg

Notad que en este punto uno pudiera haberse conectado pidiendo una dirección IP con dhclient.
El problema es que Network Manager sigue detenido y la conexión se pierde si cerramos la consola wpa_supplicant. 
Me parece menos lioso copiar la llave obtenida, relanzar network manager con

sudo sytemctl restart network-manager

y conectarse pasando por nuestra interfaz gráfica para conexiones.

Conectado

Anuncio

Wifi-libre.com: El libre pensamiento para un internet libre / Regístrese ahora

#2 04-09-2018 20:10:30

javierbu
Usuario

Registrado: 09-08-2018
Mensajes: 55

Re: Obtener llave WPA con PIN WPS (sin modo monitor ni reaver) desde Linux

Felicidades por tu post. Por este y por todos. Y gracias.


Al leer esta entrada, me surgen un par preguntas.

que diferencia hay entre esto?

[[email protected] ~]# /etc/init.d/network-manager restart
[ ok ] Restarting network-manager (via systemctl): network-manager.service.
[[email protected] ~]# service network-manager restart
[[email protected] ~]# systemctl restart network-manager
[[email protected] ~]# 

Todas funcionan y hacen su labor, y no se si estoy en lo cierto, pero todas terminan llamando el script de /etc/init.d. o no?

Igual que este ejemplo, he visto en tus scripts que haces cosas diferentes  a como yo estoy acostumbrado con identicos (o eso creo) resultados.

Por ejmplo:

[[email protected] ~]# ip link set wlan0 down
[[email protected] ~]# ip link set wlan0 up
[[email protected] ~]# ifconfig wlan0 down
[[email protected] ~]# ifconfig wlan0 up

No tengo claro si es exactamente lo mismo, y lo que se busca es tener la certeza de que funcionara en cualquier sistema, o si realmente no es lo mismo.

Desconectado

#3 04-09-2018 22:28:11

kcdtv
Administrator

Registrado: 14-11-2014
Mensajes: 4,486

Re: Obtener llave WPA con PIN WPS (sin modo monitor ni reaver) desde Linux

Es el choque entre civilizaciones, el  viejo y el nuevo mundo big_smile

  1. Systemd ha ido reemplazado en 95% de las distribuciones el viejo init (alrededor de 2015)   
    Init o systemd se lanzan nada mas lanzar el sistema operativo (su PID es 1) para ejecutar tareas cruciales para arrancar dispositivos y servicios.

  2. ip (iproute2) ha ido reemplazando ifconfig a partir de 2012: Ifconfig es obsoleto... ¡Actualiza tus sintaxis con el comando ip!

Para los viejos usuarios puede costar un poco quitar viejos hábitos y los desarrolladores de sistemas GNU-Linux lo saben. 
Por esto se puede instalar y usar aún ifconfig en lugar de iproute2
Y por esto los comandos init que ejecutas funcionan aunque tu sistema tire de systemd: "Se traducen" en comando systemd por vínculos simbólicos, aliases y otros trucos.
Lo puedes ver aquí:

[[email protected] ~]# /etc/init.d/network-manager restart
[ ok ] Restarting network-manager (via systemctl): network-manager.service.

acepta la orden init pero lo que se ejecuta de verdad es una orden systemcl (systemd).   
Services y systemctl son comandos systemd
Services es específicamente para los servicios que lanza systemd (redes, grafico etc..) y systemctl es el comando "general" (lo puedes usar para mirar el log de errores por ejemplos)
Puedes seguir usando ifconfig y init sin problemas pero es mejor aprender a manejar los comandos actuales.

Conectado

#4 04-09-2018 23:47:29

javierbu
Usuario

Registrado: 09-08-2018
Mensajes: 55

Re: Obtener llave WPA con PIN WPS (sin modo monitor ni reaver) desde Linux

Ya me imaginaba que iba por ahi la cosa...

Me queda claro que ifconfig ya paso a mejor vida. ya es hora de actualizarse.

Es mas incomodo que cuando te cambian los productos en el supermercado, sobre todo las maneras de nombrar las interfaces de ahora. Hemos pasado de wlan1 a wlx001f1f51a8b3 . Sabe Dios porque...

Muchas gracias por tu respuesta

Desconectado

#5 05-09-2018 03:27:46

kcdtv
Administrator

Registrado: 14-11-2014
Mensajes: 4,486

Re: Obtener llave WPA con PIN WPS (sin modo monitor ni reaver) desde Linux

Hemos pasado de wlan1 a wlx001f1f51a8b3 . Sabe Dios porque...

  Si quieres ver cuáles son los argumentos en favor hemos hablado de esto  aquí Llega el caós con las nuevas interfaces wifi wlxXXXXXXXXXXX
  Lo positivo es que se puede revertir fácilmente y volver al antiguo esquema de nombramiento .

Conectado

Anuncio

Wifi-highpower.es es distribuidor oficial de Alfa Network

Temas similares

Tema Respuestas Vistas Ultimo mensaje
1 16 Hoy 17:07:31 por kcdtv
7 139 Hoy 16:54:46 por kcdtv
Pegado:
Pegado:: 2ª Sorteo Del Mercadillo por josep345  [ 1 2 ]
44 1553 Hoy 16:53:17 por kcdtv
2 934 Hoy 16:03:32 por kcdtv
5 577 Ayer 18:15:16 por javierbu

Pie de página

Información del usuario

Ultimo usuario registrado: RandallJimenez
Usuarios registrados conectados: 1
Invitados conectados: 22

Conectados: kcdtv

Estadisticas de los foros

Número total de usuarios registrados: 1,236
Número total de temas: 1,207
Número total de mensajes: 12,426

Máx. usuarios conectados: 71 el Hoy 06:35:48