Script enable/disable access point wireless per Netgear DG834Gv4

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

9 Risposte a “Script enable/disable access point wireless per Netgear DG834Gv4”

  1. Cagnulein Dice:

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

    E il primo risultato su google sei stato tu ;)
    Complimenti ancora ;)

    • anywhere88 Dice:

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

  2. Mario Dice:

    Volendo sostituire la protezione wpa con la protezione wpa2 che valore della stringa dovrei sostituire?
    Grazie

    • anywhere88 Dice:

      Ciao! Veramente pensavo fosse già su wpa2… adesso non sono a portata di modem ma appena riesco ti faccio sapere. ;)

    • anywhere88 Dice:

      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!

      • Enzo Ciannavei Dice:

        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.

        • anywhere88 Dice:

          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…

  3. Alberto Dice:

    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

  4. Danko Dice:

    Ciao ho un router dlink mi daresti due diritte per creare lo script per attivare e disabilitare il wifi.
    Grazie
    Danko


Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Follow

Get every new post delivered to your Inbox.