In Questo breve articolo vi farò vedere come bastano pochi semplici comandi per collegarsi ad una rete wi-fi protetta utilizzando wpa_supplicant e wpa_passphrase.
Molti di noi oramai sono abituati ad usare NetworkManager, wicd, e simili per collegarsi a reti wi-fi, ma cosa fare se questi strumenti non sono disponibili? O magari per installarli dobbiamo collegarci a una rete wi-fi e questa è protetta?
Per gestire le reti wirelss da linea di comando su linux possiamo fare affidamento su due strumenti:
- i wireless-tools, che contengono i comandi base per interagire con la nostra scheda senza fili (quali iwconfig e iwlist).
- wpa_supplicant (insieme a wpa_passphrase e altri comandi). uno strumento specifico per autenticarsi alle rete WPA/WPA2
Quello che dobbiamo fare per identificarci e collegarci da linea di comando sono essenzialmente quattro passi (la prima volta, dalla seconda diventano due):
- Dobbiamo individuare quale è la rete alla quale dobbiamo connetterci (solo la prima volta)
- Dobbiamo creare il file di configurazione di wpa_supplicant per l’autenticazione a questa rete (solo la prima volta)
- Identificarci alla rete
- Richiedere un indirizzo ip
Quindi vediamoli uno alla volta. Il primo passo, quello per individuare le reti, sfrutta uno degli strumenti messo a disposizione dagli wireless tools. Si tratta del comando iwlist, il quale ci restituisce l’elenco delle reti wireless individuate. Lanciamolo con la seguente sintassi:
iwlist scan |
Attenzione che questo comando richiede che la scheda di rete sia attiva, quindi se ricevete solo un elenco di “interface doesn’t support scanning” dovete attivare la vostra scheda (nel mio caso wlan0) con il seguente comando:
ifconfig wlan0 up |
Il comand iwlist scan se ha trovato qualche rete ve le ristituirà con un output simile al seguente:
wlan0 Scan completed : Cell 01 - Address: XX:YY:XX:YY:XX:YY Channel:11 Frequency:2.462 GHz (Channel 11) Quality=39/70 Signal level=-71 dBm Encryption key:on ESSID:"Rete Wifi1" Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 24 Mb/s; 36 Mb/s; 54 Mb/s Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s Mode:Master Extra:tsf=0000005e4b938463 Extra: Last beacon: 1ms ago IE: Unknown: 000E416C6963652D3832343630363534 IE: Unknown: 010882848B962430486C IE: Unknown: 03010B IE: Unknown: 2A0104 IE: Unknown: 2F0104 IE: Unknown: 32040C121860 IE: Unknown: DD060010180203F4 IE: WPA Version 1 Group Cipher : TKIP Pairwise Ciphers (1) : TKIP Authentication Suites (1) : PSK
I campi che ci interessano sono essenzialmente tre:
- Encription key: che ci dice se la rete è aperta, quindi non richiede alcuna password o protetta, e in questo caso dobbiamo autenticarci
- ESSID: indica il nome della rete, ci servirá per creare il file di configurazione per wpa_supplicant
- e l’ultimo della sequenza degli IE che ci dice il tipo di chiave di protezione, che come potete vedere è WPA/PSK
A questo punto abbiamo tutte le informazioni sull'”anagrafica” della rete. Ovviamente se ci sono più reti avremo più risultati.
Quindi dal momento che la nostra rete è di tipo WPA/PSK possiamo procedere col secondo passo: creare il file di configurazione per wpa_supplicant, e questo si fa tramite il comando wpa_passprhase, per esempio se vogliamo identificarci a una rete con essid “RETE1” e password “password1” dobbiamo semplicemente dare il comando:
wpa_passphrase RETE1 password > RETE1.conf |
wpa_passphrase come comando prende due argomenti: il primo è l’ESSID della rete e il secondo la sua password, mentre con il simbolo di maggiore abbiamo ridirezionato l’output, invece che mostrare il risultato sullo schermo lo ha messo direttamente all’interno del file RETE1.conf (altrimenti vi avrebbe solo mostrato la configurazione e dovevate copiarla e incollarla in un file di testo).
Con questo file ora potete autenticarvi alla vostra rete utilizzando il comando wpa_supplicant.
pa_supplicant -D wext -i wlan0 -c RETE1.conf & |
Dove i parametri sono:
- -D wext – indica il driver da utilizzare
- -i wlan0 – indica l’interfaccia da utilizzare per la connessione, ovviamente si tratta della nostra scheda di rete, quindi sostituite wlan0 con l’id del vostro device
- -c RETE1.conf – indica invece il file di configurazione da leggere con l’autenticazione alla rete
Per comoditá, vi suggerisco di mettere l’applicazione in esecuzione in background (aggiungendo & alla fine del comando), altrimenti se chiudete la shell termina anche la connessione.
Se tutto è andato a buon fine riceverete un messaggio simile al seguente:
CTRL-EVENT-CONNECTED - Connection to XX.YY completed (auth) [id=0 id_str=].
Se avete ricevuto questo messaggio potete chiedere un ip alla rete, io utilizzo dhcpcd:
dhcpcd wlan0 |
ma la vostra distro potrebbe avere dhclient, in questo caso la sintassi è quasi la stessa:
dhclient wlan0 |
Dove ricordate di sostituire sempre wlan0 con l’id della vostra scheda di rete.
Bene con questo è tutto, al prossimo articolo! 🙂