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











