Mi sono sempre chiesto se ci fosse un modo per attivare e disattivare l’access point wireless del mio router Netgear DG834G v4 in maniera immediata, senza passare attraverso l’interfaccia web. Inizialmente mi sono indirizzato verso l’interfaccia telnet (di default non abilitata sul router), sperando in un qualche comando che permettesse di raggiungere lo scopo, ma l’assenza assoluta di una documentazione a riguardo e lo scarso successo di altri che cercavano di arrivare allo stesso risultato mi hanno presto fatto desistere.
Mi sono quindi cimentato a scrivere un piccolo script in Python che in combo con un file batch ad hoc mi ha permesso, direttamente da desktop, in pochi secondi, di poter modificare lo stato dell’access point. (Più avanti il link per il download)
Anzitutto sono andato a vedere cosa “si dicono” il browser e l’interfaccia web del router durante le operazioni sulle impostazioni, analizzando i pacchetti scambiati con Wireshark è venuto fuori che si trattava di semplici comunicazioni HTTP (quindi GET e POST), in particolare clickando sul tasto applica nella finestra delle impostazioni del wireless si capisce che l’applicazione delle impostazioni non è altro che un comando POST con il quale vengono passati tutti i valori al momento selezionati. La stringa in questione si presenta come (tutto su una riga):
ssid=anylan&WRegion=Europe&w_channel=11&wire_mode=gb&ssid_bc=ssid_bc&security_type=4&wpakey=XXXXXXXXXX&save=Applica&h_WRegion=Europe&h_w_channel=11&h_wire_mode=gb&h_enable_ap=disable&h_ssid_bc=enable&h_wire_iso=disable&h_security_type=3&todo=save&this_file=wire_wpa.htm&next_file=wire_wpa.htm
nel caso si stesse disabilitando il wireless, e invece (tutto su una riga)
ssid=anylan&WRegion=Europe&w_channel=11&wire_mode=gb&ssid_bc=ssid_bc&security_type=4&wpakey=XXXXXXXXXX&save=Applica&h_WRegion=Europe&h_w_channel=11&h_wire_mode=gb&h_enable_ap=enable&h_ssid_bc=enable&h_wire_iso=disable&h_security_type=3&todo=save&this_file=wire_wpa.htm&next_file=wire_wpa.htm
se si stava inviando il comando di abilitazione.
Come si nota l’unico cambiamento è il parametro h_enable_ap che passa da disable a enable, nulla di trascendente. Con lo script in Python non si fa altro che inviare rispettivamente un messaggio di POST con l’una o con l’altra stringa, insieme a un po’ di headers per rendere la richiesta meno anonima (in particolare, per andare sul sicuro, ho riportato pari pari tutti i dati che firefox invia, quindi user agent, keep-alive… ma soprattutto i dati di autenticazione, altrimenti dal server arriveranno solo risposte di accesso non autorizzato).
Qui potete scaricare lo script e il file batch. Il primo va messo nella cartella di installazione di Python (che potete scaricare da qui), il secondo sul desktop. Andate nel file batch e modificate eventualmente la posizione del file di script e dell’eseguibile Python (se dovessero essere diversi dal mio caso) e nello script impostate i dati in modo che si adattino alla vostra configurazione, in particolare indicate:
- IP del router (solitamente 192.168.0.1)
- Porta di accesso al router (solitamente 80)
- User e password di accesso scritto nella forma user:password (di default sarà admin:password se non l’avete mai cambiata)
- La stringa da mandare con messaggio POST, se volete potete stare a modificare quella che ho postato, ma non escludo che a seconda della versione del router o anche solo del firmware installato o della lingua possa cambiare qualcosa, quindi vi consiglio, anche per evitare danni, di provvedere da voi a recuperare quel comando ricorrendo magari a una estensione firefox come HttpFox (se non volete stare a installare un analizzatore di pacchetti), osservando il messaggio POST inviato al click su “Applica” nella pagina delle impostazioni dell’access point wireless (dovrete modificare almeno un’opzione, altrimenti non verrà inviato nulla al click su “Applica”).
Se doveste notare che lo script invia più volte il comando al router, questo può essere normale, in particolare se non è aperta una sessione di login con il router, questo a una prima richiesta risponderà “accesso non autorizzato”, solo alla seconda richiesta (inviata sempre con user e password per l’autenticazione) la richiesta verrà presa in carico.
Se qualcuno dovesse trovare un sistema più elegante o avesse qualche domanda mi faccia pure sapere


6 giugno 2011 alle 06:53
Sei un grande! Stamattina mi sono svegliato e mi è venuta in mente di fare la stessa cosa. Poi mi sono detto: “magari qualcuno l’ha già fatto
”
E il primo risultato su google sei stato tu
Complimenti ancora
7 giugno 2011 alle 12:43
ehehe, grazie mille! Volevo farlo anche in Visual C# così c’era anche un interfaccia grafica, ma poi è rimasto tutto per aria… magari in futuro XD
Certo che il top sarebbe avere la nuova versione di questo access point che ha il pulsantino per attivare il wireless
21 agosto 2011 alle 17:55
Volendo sostituire la protezione wpa con la protezione wpa2 che valore della stringa dovrei sostituire?
Grazie
22 agosto 2011 alle 07:54
Ciao! Veramente pensavo fosse già su wpa2… adesso non sono a portata di modem ma appena riesco ti faccio sapere.
29 agosto 2011 alle 18:15
Ciao, se si va nella pagina di gestione delle impostazioni wireless e si guarda il sorgente si vedono i vari valori cui corrispondono i diversi tipi di sicurezza, in particolare:
1 – WEP
2 – WPA-PSK
3 – WPA2-PSK(Wi-Fi Protected Access 2 with Pre-Shared Key)
4 – WPA-PSK+WPA2-PSK
5 – WPA-802.1x
6 – WPA2-802.1x
7 – WPA-802.1x+WPA2-802.1x
Se non funziona forse c’è stato qualche cambiamento nei firmware di diversa versione.
Ciao!
17 gennaio 2012 alle 20:10
Ho un Netgear DG834GT funziona tutto benissimo tranne una sola cosa mi sposta il radio button delle opzioni di protezione da WPA-SK a WPA-802.1x
C’è una soluzione?
Grazie Enzo.
17 gennaio 2012 alle 20:47
La versione è leggermente diversa dal mio router, il radio button selezionato è dato dal parametro h_security_type=XX riga 15 e 16 del file wifi.py, lo puoi aprire col blocco note e cambiare il valore XX da 3 a un altro numero per vedere di beccare il tipo di impostazione corretto. Di solito i valori sono in relazione con l’ordine con cui appaiono nella pagina web, quindi se ti interessa il primo tipo in elenco metterai 1. A voler fare le cose fatte bene sarebbe da rifare il controllo della richiesta inviata al router per trovare gli esatti parametri, ma se mi dici che per il resto va tutto bene dovrebbe essere sufficiente cambiare quel valore…
25 ottobre 2011 alle 21:03
Ciao, bellissima la tua trovata per lo spegnimento della parte radio del router in oggetto.
Per caso qualcuno ha lo schema elettrico del DG834Gv4 per poter anche fare una modifica hardware alla parte radio?
Buona Serata
Alberto
5 febbraio 2012 alle 10:06
Ciao ho un router dlink mi daresti due diritte per creare lo script per attivare e disabilitare il wifi.
Grazie
Danko