gulli:board Logo

Anzeige


  Antwort
QOTSA
FM4 Hörer
 
Benutzerbild von QOTSA
 
Registrierungsdatum: Nov 2005
Beiträge: 1.280
[Tutorial] Router Reconnect mit cURL

Man benötigt folgende Programme:

Mozilla Firefox
Live HTTP Headers
cURL

Hinweis:
Dieses PHP Script sollte die Erstellung der cURL Batch erleichtern:

http://header2curl.extra.hu/
http://header2curl.ohost.de/ (Mirror)
http://header2curl.1gb.in/ (Mirror)

Einleitung

Zuerst will ich noch kurz erklären, was wir hier eigentlich machen. Um die Internetverbindung zu trennen, muss man für gewöhnlich einen Button im Webinterface des Routers anklicken. Dabei wird vom Client (Browser) ein http-Request an den Router gesendet, der diesen dazu veranlasst, die Verbindung zum WWW zu kappen. Das Herstellen der Verbindung läuft genauso ab. Um herauszufinden, was genau beim Reconnect an den Router gesendet wird, zeichnen wir den gesamten Vorgang mit live http headers auf und erstellen aus dem Ergebnis eine Batch für cURL.

IP des Routers

Zuallererst sollte man die lokale IP-Adresse des Routers wissen. Dazu müsst ihr unter Start => Programme => Zubehör => die Eingabeaufforderung öffnen und in diese ipconfig eingeben und Enter drücken. Dann sollte bei Standardgateway die IP-Adresse eures Routers stehen.



Login

Grundsätzlich gibt es zwei Möglichkeiten, wie ihr euch am Router einloggen könnt. Wenn ihr die lokale IP eures Routers im Browser aufruft und es erscheint gleich zu Beginn ein solches Fenster wie auf dem Screenshot, dann handelt es sich um ein so genanntes htaccess-Login.



Dies ist der weitaus günstigere Fall. Bei einem solchen Login müsst ihr eure Zugangsdaten auf folgende Weise in die Batch schreiben.

Code:
http://Benutzername:Passwort@IP des Routers

Weitaus schwieriger wird es, wenn das Login über ein HTML-Formular erfolgt. Dies könnte etwa so aussehen:




Um ein solches Login mit cURL nachzubauen, müsst ihr den Login-Vorgang mit live http headers aufzeichnen. Klickt dazu auf Extras => live http headers und wechselt in das Register Generator. Die Haken bei Bilder und CSS könnt ihr rausnehmen zwecks der Übersicht. Loggt euch nun ein und seht euch das Ergebnis an. Es könnte in etwa so aussehen:

Code:
POST /login.php username=Benutzername&password=Passwort

Dies würde folgendem cURL-Aufruf entsprechen:

Code:
curl „http://192.168.1.1/login.php” -d “username=Benutzername&password=Passwort” –c „cookies.txt“

Durch den Parameter –c speichert cURL alle Cookies in die angegebene Datei. Um diese später zu verwenden, muss man den Parameter –b „cookies.txt“ einsetzen.

Reconnect aufzeichnen

Wenn ihr eingeloggt seid, geht zu der Seite, auf der sich ein Button mit der Aufschrift „Verbindung trennen“ oder so ähnlich befindet.



Öffnet jetzt über Extras das vorher installierte Addon live http headers und klickt danach auf den Button, um die Verbindung zu trennen und wiederum, um die Verbindung wieder herzustellen. Live http headers hat inzwischen den gesamten Vorgang aufgezeichnet. Wechselt also in das Fenster von live http headers und geht in das Register Generator. Das Ganze sollte in etwa so aussehen:



Bat-Datei erstellen

Hier sind nun alle POST und GET-Requests, die an den Router gesendet wurden, aufgelistet. Ihr müsst nun herausfinden, welche Zeilen ihr davon benötigt. Das ist im Grunde sehr einfach. In meinem Fall wurden ein paar Javascript-Dateien (.js) und ein Bild (.gif) angefordert. Diese Zeilen sind für den Reconnect vollkommen unwichtig. Nur die erste und die fünfte Zeile werden benötigt. Wenn ihr wisst, welche Zeilen ihr braucht, kopiert euch diese heraus und öffnet einen beliebigen Texteditor. (zB Windows Notepad) Fügt dort die Zeilen erst einmal unverändert ein. In meinem Fall wurden zwei POST-Requests an den Router gesendet, der erste, um die Verbindung zu trennen und der zweite, um sie wieder herzustellen. Dass es sich um POST handelt, erkennt man am Schlüsselwort POST am Anfang der Zeile. Im Grunde kommen nur POST und GET in Frage.

Nun muss man das Ganze so umbauen, dass curl die beiden Requests an den Router senden kann. Nehmen wir uns die erste Zeile vor:

Code:
POST /?ce=1&be=0&l0=-1&l1=-1 0=13&1=Shared_Internet&5=2

Der erste Teil vor dem Leerzeichen (rot) zeigt an, wohin der Request gesendet wurde. Beim zweiten Teil hinter dem Leerzeichen (blau) handelt es sich um die POST-Daten. Das Ganze sieht als curl-Aufruf folgendermaßen aus:

Code:
curl „http://Benutzer:Passwort@10.0.0.138/?ce=1&be=0&l0=-1&l1=-1“ –d „0=13&1=Shared_Internet&5=2

Durch den Parameter –d wird der blaue Teil als POST versendet. Wenn ihr euch am Router gar nicht einloggen müsst, dann kann Benutzer:Passwort@ natürlich weggelassen werden. Genau dasselbe muss man jetzt noch mit der zweiten Zeile machen und man ist schon so gut wie am Ziel.

Aus diesen zwei Zeilen

Code:
POST /?ce=1&be=0&l0=-1&l1=-1 0=13&1=Shared_Internet&5=2 POST /?ce=1&be=0&l0=-1&l1=-1 0=12&1=Shared_Internet&5=2

ist also das hier geworden:

Code:
curl "http://Benutzer:Passwort@10.0.0.138/?ce=1&be=0&l0=-1&l1=-1" -d "0=13&1=Shared_Internet&5=2" curl "http://Benutzer:Passwort@10.0.0.138/?ce=1&be=0&l0=-1&l1=-1" -d "0=12&1=Shared_Internet&5=2"

Das sieht sehr kompliziert aus, ist aber im Grunde ganz einfach.

Die Textdatei müsst ihr jetzt nur noch mit der Endung bat abspeichern und schon könnt ihr ausprobieren, ob es funktioniert.

Sonderzeichen

Sonderzeichen werden vom Kommandozeileninterpreter cmd.exe, (also dem schwarzen Fenster mit grauer Schrift ;-)) anders interpretiert. Dies kann man ungehen, indem man die einzelnen Teile (URL, Post-Daten...) in doppelte Hochkommata setzt. Nicht so beim Prozentzeichen, dieses wird auch dann nicht als reiner String interpretiert. Um dieses Problem zu lösen, muss man jegliche Prozentzeichen verdoppeln, also hinter jedes Prozentzeichen ein weiteres einfügen.

Beispiel:

Code:
curl -d "MODEM_LOG=&dial=Connect&message=Session+is+being+terminated%0D%0A" "http://192.168.0.1/st_poe.cgi"

...wird zu:

Code:
curl -d "MODEM_LOG=&dial=Connect&message=Session+is+being+terminated%%0D%%0A" "http://192.168.0.1/st_poe.cgi"

Das PHP-Script macht das übrigens automatisch.

Ergebnis testen

Zum Testen könnt ihr beispielsweise auf die Seite http://whatismyip.org gehen und euch die aktuelle IP merken. Führt dann die reconnect.bat per Doppelklick aus und schaut, ob sich die IP verändert.

Die curl.exe muss (logischerweise) im selben Ordner liegen, wie die reconnect.bat!

Viel Erfolg!

Thau hat sich dazu bereit erklärt, die Liste der erfassten Router fortuzuführen. Wenn ihr euer Ergebnis, also die fertige Batch anderen Usern zur Verfügung stellen wollt, dann postet sie bitte in seinem Thread.

Aktuelle Router reconnect Liste für cURL

Geändert von QOTSA (24. 11. 2007 um 13:53 Uhr).
Alt 21. 04. 2007, 17:24 QOTSA is offline Mit Zitat antworten #1
PSPNewb
Mitglied
 
Registrierungsdatum: Apr 2006
Beiträge: 26
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

Dankeschön, hat gut funktioniert
Alt 21. 04. 2007, 20:27 PSPNewb is offline Mit Zitat antworten #2
ojii
Mitglied
 
Registrierungsdatum: Nov 2006
Beiträge: 51
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

kannst du auch ein tutorial für router machen die mit GET arbeiten?
Alt 22. 04. 2007, 13:37 ojii is offline Mit Zitat antworten #3
QOTSA
FM4 Hörer
(Threadstarter)
 
Benutzerbild von QOTSA
 
Registrierungsdatum: Nov 2005
Beiträge: 1.280
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

Zitat:
Zitat von ojii
kannst du auch ein tutorial für router machen die mit GET arbeiten?

Von meinen bisherigen Routern haben alle mit POST gearbeitet. Aber im Grunde müsstest du nur herausfinden welche URL man zum Reconnecten aufrufen muss und diese dann ohne <POST> bei Routercontrol angeben. GET wird standardmäßig verwendet.
Alt 22. 04. 2007, 14:42 QOTSA is offline Mit Zitat antworten #4
weisnixlol
Keks?
 
Benutzerbild von weisnixlol
 
Registrierungsdatum: Dec 2005
Beiträge: 423
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

Schade....
Hab mich schon gefreut. Ein Tut das einfach zu befolgen ist. Nun seh ich gerade das ich auch einen Get router habe.

Und das mit dem Url herausfinden klappt irgendwie auch ned so ganz....
Das is das einzige was ich bekomm:
Ip (Bei dir: 10....)/indexRES.htm?homeRES.htm

Und natürlich noch andere im Live HTTP Headers.
Alt 22. 04. 2007, 18:59 weisnixlol is offline Mit Zitat antworten #5
QOTSA
FM4 Hörer
(Threadstarter)
 
Benutzerbild von QOTSA
 
Registrierungsdatum: Nov 2005
Beiträge: 1.280
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

@weisnixlol

Du kannst ja mal das Ergebnis von http live headers in einem Spoiler posten.
Alt 22. 04. 2007, 19:10 QOTSA is offline Mit Zitat antworten #6
weisnixlol
Keks?
 
Benutzerbild von weisnixlol
 
Registrierungsdatum: Dec 2005
Beiträge: 423
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

Ok da ich nicht weiss welche Zeile kopiere ich die erste und Zweite. Also das is nur vom Trennen der Verbindung.

Erste:
Spoiler:


Zweite
Spoiler:
Alt 22. 04. 2007, 19:17 weisnixlol is offline Mit Zitat antworten #7
ojii
Mitglied
 
Registrierungsdatum: Nov 2006
Beiträge: 51
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

beim disconnecten:
Spoiler:


beim connecten

Spoiler:


wär super wenn du mir gleich ne bat oder so rausgeben könntest.
Alt 22. 04. 2007, 19:18 ojii is offline Mit Zitat antworten #8
QOTSA
FM4 Hörer
(Threadstarter)
 
Benutzerbild von QOTSA
 
Registrierungsdatum: Nov 2005
Beiträge: 1.280
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

Das sollte es sein:

Code:
<POST>?Disconnect=Verbindung+trennen
Alt 22. 04. 2007, 19:30 QOTSA is offline Mit Zitat antworten #9
ojii
Mitglied
 
Registrierungsdatum: Nov 2006
Beiträge: 51
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

RC meldet immer: Router Offline
Alt 22. 04. 2007, 20:21 ojii is offline Mit Zitat antworten #10
[GerAES]-[Scott
Gast
 
Beiträge: n/a
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

wie installiere ich Live HTTP Headers
???
Alt 22. 04. 2007, 21:39 Mit Zitat antworten #11
[GerAES]-[Scott
Gast
 
Beiträge: n/a
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

installiert habe ich es jetzt, aber es kommt das hier. Kann mir einer helfen??


beim disconnect:


http://192.168.0.1/pppoe.cgi?data=.f..

GET /pppoe.cgi?data=.f.. HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://192.168.0.1/Status_Device_Info.html

HTTP/1.x 200 200 OK
Cache-Control: no-cache
Server: Ubicom/1.1
Content-Length: 30
----------------------------------------------------------




und beim connecten:

http://192.168.0.1/pppoe.cgi?data=.P..

GET /pppoe.cgi?data=.P.. HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://192.168.0.1/Status_Device_Info.html

HTTP/1.x 200 200 OK
Cache-Control: no-cache
Server: Ubicom/1.1
Content-Length: 30
----------------------------------------------------------
http://192.168.0.1/computer_list.xml

GET /computer_list.xml HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 200 OK
Server: Ubicom/1.1
Transfer-Encoding: Chunked
Content-Type: text/xml
Cache-Control: max-age=1
----------------------------------------------------------
http://192.168.0.1/igmp_group_memberships.xml

GET /igmp_group_memberships.xml HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 200 OK
Server: Ubicom/1.1
Transfer-Encoding: Chunked
Content-Type: text/xml
Cache-Control: max-age=1
----------------------------------------------------------
http://192.168.0.1/connection_status.xml

GET /connection_status.xml HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 200 OK
Server: Ubicom/1.1
Content-Length: 642
Content-Type: text/xml
Cache-Control: max-age=1
----------------------------------------------------------
http://192.168.0.1/computer_list.xml

GET /computer_list.xml HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 200 OK
Server: Ubicom/1.1
Transfer-Encoding: Chunked
Content-Type: text/xml
Cache-Control: max-age=1
----------------------------------------------------------
http://192.168.0.1/igmp_group_memberships.xml

GET /igmp_group_memberships.xml HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 200 OK
Server: Ubicom/1.1
Transfer-Encoding: Chunked
Content-Type: text/xml
Cache-Control: max-age=1
----------------------------------------------------------
http://192.168.0.1/connection_status.xml

GET /connection_status.xml HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 404 404 Not Found
Cache-Control: no-cache
Server: Ubicom/1.1
Content-Length: 13
Connection: close
----------------------------------------------------------
http://192.168.0.1/Status_Device_Info.html

GET /Status_Device_Info.html HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://192.168.0.1/
Cache-Control: max-age=0

HTTP/1.x 200 200 OK
Server: Ubicom/1.1
Content-Length: 906
----------------------------------------------------------
Alt 22. 04. 2007, 21:56 Mit Zitat antworten #12
QOTSA
FM4 Hörer
(Threadstarter)
 
Benutzerbild von QOTSA
 
Registrierungsdatum: Nov 2005
Beiträge: 1.280
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

Mach bitte einen Spoiler, sonst wird es hier so unübersichtlich!

HTML-Code:
[spoiler]...[/spoiler]

Ruf mal diese URL ganz normal im Browser auf und schau, ob du einen neue IP bekommst:

Code:
http://192.168.0.1/pppoe.cgi?data=.f..
Alt 22. 04. 2007, 22:25 QOTSA is offline Mit Zitat antworten #13
ojii
Mitglied
 
Registrierungsdatum: Nov 2006
Beiträge: 51
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

woran kann es liegen dass RC die ganze zeit meint der router sei offline?

achja ich habe versucht das ganze RC zu umgehen und ne batch zu schreiben aber es geht irgendwie ned:

Code:
telnet 192.168.1.1 user admin pass **** restart

er fragt mich trotzdem noch nach einem passwort..
Alt 22. 04. 2007, 23:41 ojii is offline Mit Zitat antworten #14
weisnixlol
Keks?
 
Benutzerbild von weisnixlol
 
Registrierungsdatum: Dec 2005
Beiträge: 423
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

Man müsste die Eingabe automatisieren jedoch kenn ich mich damit nich aus. Wenn jemand den Befehl wüsste...
Alt 23. 04. 2007, 14:15 weisnixlol is offline Mit Zitat antworten #15
[GerAES]-[Scott
Gast
 
Beiträge: n/a
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

Zitat:
Zitat von QOTSA
Mach bitte einen Spoiler, sonst wird es hier so unübersichtlich!

HTML-Code:
[spoiler]...[/spoiler]

Ruf mal diese URL ganz normal im Browser auf und schau, ob du einen neue IP bekommst:

Code:
http://192.168.0.1/pppoe.cgi?data=.f..

nein ich bekomme dann keine neue ip.
Alt 23. 04. 2007, 18:16 Mit Zitat antworten #16
QOTSA
FM4 Hörer
(Threadstarter)
 
Benutzerbild von QOTSA
 
Registrierungsdatum: Nov 2005
Beiträge: 1.280
Re: Tutorial für RouterControl (für Router, die nicht in der Liste sind)

Zitat:
Zitat von [GerAES]-[Scott
nein ich bekomme dann keine neue ip.

Sorry, dann weiß ich auch nicht weiter.

An alle, die immer noch Probleme haben, sucht erstmal nach einer Alternative:

upnp
telnet
mausemu (sollte imo der allerletzte Ausweg sein)

Wenn ihr da nichts findet, müsst ihr eben ein wenig herumprobieren.

Dieses Tutorial soll nur einen Anregung sein. Ich habe leider auch nicht für jeden Router einen Lösung parat! Es muss sich jeder selbst damit auseinandersetzen.

mfg

qotsa
Alt 24. 04. 2007, 18:11 QOTSA is offline Mit Zitat antworten #17
sauger85
Mitglied