Router Reconnect mit einem Knopfdruck unter Mac OSX

6. November 2008

Es gibt Situationen, da möchte man möglichst schnell eine neue IP bekommen. Zum Beispiel wenn man einen neuen Useraccount für eine Seite anlegen möchte. Leert man zusätzlich noch seine Cookies und Session, so kann man als komplett neuer User erscheinen. Das ganze geht auch wunderbar für Freeaccounts bei Rapidshare. Hierbei muss man noch nichtmal seine Cookies löschen. Es gibt Leute, die ziehen dafür den Stecker aus dem DSL Modem. Etwas steinzeitlich finde ich. Einfacher geht es dabei meist mit einem "Disconnect" / "Connect" in Router Admin Interface.
Aber auch das ist umständlich.

Mit einem kleinen Script geht das viel einfacher.

Mein Beispiel basiert aus Mac OSX und dem Router D-Link DSL-2540T, sollte aber so für jeden Router übertragbar sein.
Zuerst muss man rausfinden welcher Befehl im Admin Interface den Disconnect und den Connect auslöst.

HTTP Anfrage aufzeichnen
Live HTTP Header ist ein Firefox Plugin, welches alle HTTP Anfragen/Antworten aufzeichnet. Dies ist wie ein Logfile für den HTTP Verkehr.
Auf der Router Adminseite mit der Disconnect Funktion lässt man den Live HTTP Header mitlaufen, während man den Router vom Netz trennt. In meinem Fall heisst die Seite http://192.168.1.1/cgi-bin/webcm?getpage=../html/status/status_deviceinfo.htm. Bei dem Vorgang werden natürlich eine Menge HTML Elemente neu geladen, welche auch in dem Log erscheinen. Diese normalen HTML Elemente wie Images und Javascript werden per GET aufgerufen. Aus dem entstandenen Logfile kann man so einfach alle GET Anfragen löschen und hat nur ein POST Element übrig. Diese fängt in meinem Fall mit POST /cgi-bin/webcm HTTP/1.1 an. Danach sieht man eine Menge an Header Parametern, von dem uns aber nur eines interessiert:

getpage=..%2Fhtml%2Fstatus%2Fdeviceinfofile.htm&encaps0%3Asettings%2Fmanual_conn=0&var%3Aconid=encaps0&var%3Amycon=connection0&var%3Acontype=&connection0%3Apppoe%3Acommand%2Fstop=&var%3Ajudge=

Das ist genau das Post Parameter, das die Trennung des Router vom Netz auslöst. Loggen wir das Reconnect mit Live HTTP Header mit, so bekommen wir in meinem Fall

getpage=..%2Fhtml%2Fstatus%2Fdeviceinfofile.htm&encaps0%3Asettings%2Fmanual_conn=1&var%3Aconid=encaps0&var%3Amycon=connection0&var%3Acontype=&connection0%3Apppoe%3Acommand%2Fstart=&var%3Ajudge=1

Damit haben wir schon beide POSTs die wir für die Trennung und den Wiederausbau der Verbindung brauchen.

Scripterstellung
Ich nutze Apple Automator, weil ich in das Script noch eine Ausgabe für Growl eingebaut habe. Man kann das folgende Shell Script natürlich auch anders verwenden.
Per CURL Befehl wird die Admin Webseite des Routers aufgerufen, und dann mit -d ein POST Request gesendet. Das ganze sieht dann so aus:

curl "http://username:password@192.168.1.1/cgi-bin/webcm?getpage=../html/status/status_deviceinfo.htm" -d "getpage=..%2Fhtml%2Fstatus%2Fdeviceinfofile.htm&encaps0%3Asettings%2Fmanual_conn=0&var%3Aconid=encaps0&var%3Amycon=connection0&var%3Acontype=&connection0%3Apppoe%3Acommand%2Fstop=&var%3Ajudge="

curl "http://username:password@192.168.1.1/cgi-bin/webcm?getpage=../html/status/status_deviceinfo.htm" -d "getpage=..%2Fhtml%2Fstatus%2Fdeviceinfofile.htm&encaps0%3Asettings%2Fmanual_conn=1&var%3Aconid=encaps0&var%3Amycon=connection0&var%3Acontype=&connection0%3Apppoe%3Acommand%2Fstart=&var%3Ajudge=1"

username:password muss natürlich entsprechend ersetzt werden.

Das ganze sieht dann in Apples Automator so aus:

Speicher man das ganze als Programm ab und zieht es danach auf den Dock, so hat man mit einem Knopfdruck eine neue Verbindung und neue IP.

Nicht alle Router verwenden POST Requests für diese Funktion. GET ist auch möglich, oder der reine Aufruf einer Datei. Manchmal reicht schon ein Blick in den Quelltext. Mein Beipiel ist woh das komplizierteste Verfahren um es nachzuscripten.
Selbstverständlich sollte man auch die IP Adresse prüfen, sie muss nicht unbedingt 192.168.1.1 sein, auch wenn das die gängiste Adresse ist.

Wer glück hat uns seinen Router hier oder hier findet, der kann sich die Traffic Analyse per HTTP Live Header oder den Blick in den Quellcode komplett sparen

Download meines Beispiels: Apple Automator Skript für Dlink 2640T

Trackback URL for this post:

http://www.lopsta.com/trackback/876

No Response yet.

    Kommentar hinzufügen

    Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt. Wenn Du eine Gravatar Account hast, wird dieser verwendet.