Kommunizieren mit Router

Für allgemeine Fragen zur Programmierung mit PureBasic.
Icke
Beiträge: 143
Registriert: 08.09.2004 13:19

Beitrag von Icke »

Ansonsten nimm dies, ist dann zwar mit externer Hilfe aber es geht dann wenigstens :

Code: Alles auswählen

URLDownloadToFile_(0, "http://www.gene6.com/g6ftpd/ip.php3", "C:\IP.txt", 0, 0)
Benutzeravatar
pvmichael
Beiträge: 144
Registriert: 29.08.2004 17:59
Wohnort: Rosenheim
Kontaktdaten:

Beitrag von pvmichael »

remi_meier hat geschrieben:Mein ZyXel Router kommuniziert auch über Telnet (port 21)
Port 21/tcp ist eigentlich für FTP gedacht. Telnet läuft auf Port 23/tcp...
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Ooops :oops:
Stimmt, ist natürlich Port 23 :oops: :oops:
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag von Falko »

@NicTheQuick

Wie wäre es mit dem Code aus dem alten Forum?

http://www.robsite.de/php/pureboard-arc ... c&start=10


Da du warscheinlich auch ein Webinterface besitzt, müßtest du im Explorer in der Statusleiste sehen können, welche Seite im Router angezeigt wird. Bei mir hab ich es so gemacht. Die Seite, die die IE_IP anzeigt, kopiert. Den Quelltext ausgelesen, und anhand des Quelltextes die byteposition IP gemerkt und im Programm eingefügt. Aber viel braucht man ja nicht beschreiben ( siehe quellcode "AltForum"
Funktioniert so ganz gut. Natürlich ist mit den letzen Updates die Möglichkeit mit der Direkteinwahl "Benutzername und Passwort per http" entfernt worden. Aber PC-Welt hat mit einem Fix schnell reagiert, so das diese Einschränkung rückgängig gemacht worden ist. Habe auch irgendwo im Forum dazu verlinkt.

MfG Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

Aber Nic, wie man an die eigene IP kommt steht doch sogar in der FAQ! :wink:
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Benutzeravatar
deMattin
Beiträge: 87
Registriert: 30.08.2004 13:36
Wohnort: Ruhrpott
Kontaktdaten:

Beitrag von deMattin »

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. :mrgreen:

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>
the_pharao
Beiträge: 51
Registriert: 09.09.2004 14:20

Beitrag von the_pharao »

mal ne dumme frage... wieso willst du deine ip ausgerechnet über den router herausfinden? ruf doch einfach eine webseite auf, die dir anzeigt, welche ip du hast. da gibts genügend, z.b. http://whatismyip.org/

der vorteil ist, es funktioniert mit jedem router ;)

Epic Space Battles: Solar*Conflict - 3D Shoot'em up: UFO Onslaught! 3d
Icke
Beiträge: 143
Registriert: 08.09.2004 13:19

Beitrag von Icke »

Wie deMattin schon schreibt : Bei Abfrage geht ein Router online wenn er auf "Connect on Demand" eingerichtet ist. Bei Flatrate isses egal, aber bei Zeittarif absolut unnötigt. Ausserdem wer will auf externe Dienstleister angewiesen sein, vielleicht ist der Dienstleister mal irgendwann nicht ereichbar, stellt seine Adresse um oder seinen Dienst ein...
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von NicTheQuick »

DeMattin hat geschrieben:Wenn dich also hier einzelne Routinen interessieren, dann kann ich die gerne posten ... (dann eventuell direkt in "Code, Tipps und Tricks")
Ich warte schon gespannt darauf endlich eine Möglichkeit - am besten in Form einer Procedure - zu finden, wie ich mit meinem Router verbinden kann, damit er mit der IP rausrückt. Sollte ich da vielleicht bei Belkin selbst mal nachhaken, denn im "Benutzerhandbuch" (bestehend aus 1 oder 2 DIN A4-Seiten) steht überhaupt nichts. Ich habe hier fast alles selbst herasufinden müssen... :|
Bild
Benutzeravatar
nightsky
Beiträge: 9
Registriert: 08.09.2004 12:42
Kontaktdaten:

Beitrag von nightsky »

Hi,

ich habe eine minimale http-funktionssammlung geschrieben. Folgendes geht bereits:

- GET Method
- POST Method
- chunked transfer-encoding
- basic auth

Zu finden ist das ganze unter folgender URL:

http://www.barrens.de/pb/src/

http.pb ist die Lib und http_example.pb ist ein kleines Beispielprgramm wie man die eigene IP rausbekommt. small_functions.pb enthält kleinere nützliche Funktionen die benötigt werden.

CU!
Markus
Antworten