Collegarsi a una rete wi-fi usando wpa_supplicant

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):

  1. Dobbiamo individuare quale è la rete alla quale dobbiamo connetterci (solo la prima volta)
  2. Dobbiamo creare il file di configurazione di wpa_supplicant per l’autenticazione a questa rete (solo la prima volta)
  3. Identificarci alla rete
  4. 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:

  1. Encription key: che ci dice se la rete è aperta, quindi non richiede alcuna password o protetta, e in questo caso dobbiamo autenticarci
  2. ESSID: indica il nome della rete, ci servirá per creare il file di configurazione per wpa_supplicant
  3. 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! :)

Share

flattr this!

Related links:
This entry was written by italialinux , posted on sabato agosto 10 2013at 11:08 am , filed under Bash, Linux, Network, wi-fi and tagged , , , , , . Bookmark the permalink . Post a comment below or leave a trackback: Trackback URL.

Lascia un Commento

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*