Hallo zusammen,
mal ein paar Infos zu dem Thema:
Es gibt viele verschiedene Arten, wie man sich in das Webinterface eines Routers einloggen kann: per http-Authentication, mit (cgi-)Skripten, per get oder post, ...
Das hängt vom Routerhersteller ab und manchmal ändert das ein Hersteller auch mal bei einer neuen Firmware oder einem neuen Routermodell (z.B. Netgear)
Wenn man für das Einloggen in's Webinterface irgend einen Button betätigen muss, ist es Authentifizierung per Script. Sowas ist grundsätzlich erstmal kein Problem. Es gibt hier aber auch Unterschiede (get oder post), wie die Parameter übergeben werden (Infos z.B.
hier).
Wenn dieser Button ein cgi-Skript aufruft und das Passwort hier als Parameter übergibt, kann man diesen Skript-Aufruf nutzen, um sich einzuloggen und in der gleichen Session ruft man danach die eigentlich Webinterface-Seite auf (get-Methode).
Bei "post" läuft das ähnlich ab, nur kann ich hier nicht einfach einen html-String aufrufen um die Parameter zu übergeben, sondern muss die Daten per "post" übergeben. Wie das mit PB geht, findet man irgendwo im alten PB-Forum.
Kommt beim Aufruf der Webinterface-Seite direkt ein "freies Fenster" des Browsers (Netzwerkkennwort eingeben, Geben Sie Benutzername und Kennwort ein, Site: 192.168.1.1, Bereich: ..., Benutzername: __, Passwort: __), in dem man Benutzername und Passwort einträgt, dann ist es ziemlich sicher normales html-Auth - also kein Problem damit (und mit VURM)
Die Geschichte mit dem MS-Bugfix für die Passwortübergabe (html-Auth) in der Adresszeile gilt nach meinen Erkenntnissen nur für den Browser (IE). Zumindest funktioniert die Passwortübergabe auch ohne den "Fix" (um diesen Bugfix teilweise wieder zu deaktivieren) mit diversen "Internetseitenausleseroutinen", die man hier für PB so findet.
Wenn's um Infos aus dem Webinterface geht, dann ist natürlich der erste Schritt, überhaupt eine Webinterface-Seite im Quelltext irgendwie in's RAM zu bekommen. Danach pharsed man diese Daten dann nach der IP.
Hier kann man dann entweder eine automatische IP-Suche machen oder nach eindeutigen Strings vor und nach der IP suchen lassen und so diese Info "einkreisen".
"Bytesuche" (also bei xtem Byte fängt die WAN-IP an) kann man i.A. vergessen, da vor der IP eventuell dynamische Daten stehen, so dass sich die Adressposition im Webinterface-Quelltext ändern kann.
Manche Router bieten natürlich auch die IP per telnet. Hier ist die Auswertung dann i.A. etwas einfacher - dafür ist der Zugriff auf telnet etwas komplizierter
Die WAN-IP aus dem Router auszulesen ist natürlich immer besser, als einen Internetdienst zu nutzen. Denn der Internetdienst funktioniert nur dann, wenn man online ist. Und wenn man den Router so konfiguriert hat, dass er sich bei Anfrage automatisch einwählt, wählt er sich jedesmal ein, wenn man die IP checkt - auch wenn man ansonsten keine Internetverbindung benötigt.
Man bekommt somit also ein Programm, das die Internetverbindung hält, wenn man diesen IP-Check alle paar Minuten macht!
Ausserdem kann man bei Abfrage des Routers auch indirekt erkennen, ob der Router offline ist. Dann gibt's ja keine WAN-IP bzw. die ist dann 0.0.0.0!
Ich habe mit PureBasic ein komplettes Router-Tool (VURM - Vigor-Users Router Monitor, zu finden auf
http://www.vigor-users.de) programmiert, das noch viel mehr macht, als nur die IP anzuzeigen.
Das Programm ist vom Prinzip her universell für jeden Router verwendbar und an allen Ecken auch vom Benutzer anpassbar und konfigurierbar.
Leider unterstützt es derzeit nur die Authentifizierung beim Router per html-Auth. Es wurde eben (erstmal) entwickelt für DrayTek Router, die nur diese Authentifizierung verwenden. Da diese Authentifizierung aber die geläufigste ist, sollte es auch jetzt schon mit vielen anderen Routern laufen (und macht es auch nach einigen Rückmeldungen).
Auch wenn mein Programm vermutlich mit deinem Belkin nicht verbinden sollte (wenn die Verbindung nach Eingabe von Routerpasswort und Benutzernamen klappen sollte, ist der Rest reine Konfigurationseinstellung und dabei könnte ich per Mail helfen), kannst du es dir trotzdem mal anschauen.
Dein Quelltext sieht ja so aus, dass du per "post" Daten übergeben musst. Jedenfalls klappt damit bei dir wohl kein normaler html-Auth, da ich nicht davon ausgehe, das Belkin beides parallel realisiert hat.
Ich bin sicher, dass du im Programm Anregungen bekommen kannst, wie etwas realisiert werden kann. Ich denke, jemand der programmieren kann, wird erkennen, welche Routinen hinter einzelnen Programm-Funktionen stecken (können).
Z.B. wenn man in der Konfiguration die Such-Option des Programms sieht, dass man die x-te IP auf der Webseite finden soll und diese ist dann z.B. die DNS-IP. Dann ist klar, dass ich eine Routine haben muss, die IP-Adressen in einem beliebigen Text anhand des Aufbaus einer IP finden kann.
Wenn dich also hier einzelne Routinen interessieren, dann kann ich die gerne posten ... (dann eventuell direkt in "Code, Tipps und Tricks")
Das komplette Programm im Quelltext ist mit mehr als 8500 Zeilen (in der Pro-Version) etwas zu lang, um es hier zu posten ...
Gruß,
Martin
PS: Der Hinweis auf die FAQ hier mag zwar grundsätzlich richtig sein, aber die FAQ beleuchtet nicht alle Aspekte und vor allem nicht alle Möglichkeiten.
Es geht ja eben darum, dass man kein "Workaround", wie es der Aufruf eines Internetdienstes nunmal ist, nutzen will, sondern direkt die Info aus dem Router auslesen möchte.
Warum das zumindest für ein Tool, das die IP zyklisch prüft, "besser" ist, habe ich ja oben schon geschrieben!
PPS: Wer ein Webseitenskript haben möchte, mit der zuverlässig die IP des Besuchers angezeigt wird (auch wenn man hinter einem Proxy sitzt), damit man die auf seinem eigenen Webspace installieren kann, poste ich hier mal ein "gutes" php-Skript (habe ich auch auf vigor-users.de im Menübereich eingebaut).
Damit ist man zumindest unabhängig von irgend welchen "Webdiensten" wie "
www.myip.com", wenn man schon unbedingt das "Workaround" aus der FAQ nutzen möchte. Der eigene Webserver muss dafür natürlich php können.
ipadresse.php:
Code: Alles auswählen
<?php
if(getenv("HTTP_CLIENT_IP")) {
$ip = getenv("HTTP_CLIENT_IP");
} elseif(getenv("HTTP_X_FORWARDED_FOR")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
} else {
$ip = getenv("REMOTE_ADDR");
}
echo "Deine IP: ";?>
<b>
<?php
echo $ip;
?>
</b>