Lokales Netzwerk nach FTP-Servern durchsuchen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Arby.

    Lokales Netzwerk nach FTP-Servern durchsuchen

    Hallo,

    ich habe eine Software geschrieben, welche von einer speziellen Industriesteuerung automatisch Backups anlegt.

    Die Daten können von der Steuerung per FTP-heruntergeladen werden. Ich möchte dem Anwender meiner Software

    gerne die Möglichkeit geben, das Netzwerk nach möglichen Quellen für die Datensicherung zu durchsuchen. Sprich

    ich möchte das lokale Netzwerk scannen und dabei nur die FTP-Server auflisten. Ich scheitere daran, dass ich nicht

    sicher sagen kann, ob es sich bei einem Netzwerkteilnehmer wirklich um einen FTP-Server handelt. Kennt jemand,

    rein zufällig natürlich :), eine Funktion oder ähnliches, welche mir behilflich sein könnte? Sowas wie:

    IPEndpoint = scanForFtpServer(Subnet)

    Nur so als Beispiel. Bräuchte ja die IP-Adresse und den Port, welcher für FTP-Verbindungen eingerichtet wurde. Wenn es

    da nichts gibt, bleibt noch die Frage, an welchem Merkmal könnte ich einen FTP-Server identifizieren?



    Freu mich auf die Ideen und Tipps!

    Danke!
    Also Standard FTP Port ist 21, aber ob das zum Identifizieren reicht weiß ich nicht.
    Ansonsten müsstest du halt dein Netzwerk auf Verfügbare Clients durchsuchen, bei jedem Client überprüfen, welche Ports offen sind, und dann bei jedem offenen Port versuchen, eine FTP Verbindung herzustellen.
    Wobei es dann einfacher wäre, einfach die URL einzugeben, denn der oben genannte Vorgang würde, je nach Größe des Netzwerkes, recht lange dauern.
    Liebe Grüße
    sothere
    Wenn man der Einfachheit halber davon ausgehen kann, dass alle in Frage kommenden Steuerungen ihren FTP-Zugang auf einem fest definierten Port bzw. dem Standard-Port laufen lassen, muss kein sog. "Portscan" durchgeführt werden. Das Problem wird vielmehr sein, die verfügbaren Server-Adressen ausfindig zu machen, denn einen "Broadcast" gibt es bei FTP nicht.

    Ich würde folgende Vorgehensweise versuchen:

    1. gültigen Netzwerkadapter finden
    Selbst auf Rechnern mit nur einer Netzwerkkarte kann die Abfrage der Adapter über das Framework mehrere Endpunkte auflisten. Schließlich gibt es noch das Loopback-Interface, diverse USB-Geräte verhalten sich ebenfalls wie Netzwerkadapter, etc. Die Suche nach "testen auf Internetverbindung" kann hier ggf. weiterhelfen, da du halt "den" Netzwerkadapter brauchst, der eine gültige IP4-Adresse hat und der auch am LAN hängt (und nicht nur an irgendeinem lokalen Dienst).

    2. Mit Hilfe des Frameworks die TCP/IP-Parameter des Adapters lesen. Von Bedeutung wäre hier die Eigenschaft "NetMask", weil die Aufschluss darüber gibt, welcher Adressbereich als "LAN" definiert ist. Über dieses LAN hinaus würde ich gar nicht erst nach FTP-Servern suchen, das wäre ne Lebensaufgabe ;)
    Meist kommt da also sowas raus wie "255.255.255.0", was bedeutet, dass die ersten 3 Segmente der IP-Adresse "fest" sind und im letzten Segment 254 verschiedene Werte möglich sind. Mit Hilfe von IP-Adresse und NetMask ermittelst du dann den Bereich, in welchem nach FTP-Servern gesucht werden soll.

    Beispiel:
    IP deines Rechners ist 192.168.1.26, NetMask ist 255.255.255.0
    -> dann baust du eine Schleife über die IP-Adressen von 192.168.1.1 bis 192.168.1.254

    3. In dieser Schleife versuchst du nun einen Socket auf der jeweiligen Adresse und dem definierten Port des gesuchten FTP-Servers zu öffnen. Wie gesagt: Standard ist 21, vermutlich reicht das schon, es sei denn du weißt, dass der FTP-Server deiner Steuerung einen anderen Port benutzt, das kann dir aber von uns keiner beantworten. Kann eine Verbindung auf dem Port hergestellt werden, ist die Wahrscheinlichkeit hoch, dass du deinen gesuchten FTP-Server gefunden hast. Ggf. kannst du das noch verifizieren, indem du nach dem Herstellen der Verbindung noch die vom Server gesendeten "Willkommensmeldung" ausliest. Denn nach Spezifikation muss dort mindestens eine Zeile dabei sein, die mit "220 " beginnt, um zu kennzeichnen, dass hier ein FTP-Server werkelt, der nun Login-Informationen haben willst. Das würde dir ja schon reichen, wenn es nur darum geht, den FTP-Server zu finden, kannst du an der Stelle die Verbindung wieder schließen ohne einzuloggen.

    Nachtrag:
    Ganz vergessen: Es ist natürlich sehr wahrscheinlich, dass in diesem LAN noch weitere Rechner vorhanden sind, die ebenfalls einen FTP-Server auf dem Standardport betreiben. Die würdest du mit dieser Methode ebenfalls finden, auch wenn sie nicht eine deiner Steuerungen sind. Das möchtest du vermutlich aber gar nicht.
    Dann solltest du in Erfahrung bringen, mit welcher Meldung genau sich denn nun der FTP-Server deiner Steuerung nach dem Verbindungsaufbau meldet und hoffen, dass dort Angaben enthalten sind, die eindeutig Aufschluss darüber geben, dass es auch eine gesuchte Steuerung ist, und dass dort nicht einfach nur eine Standardmeldung kommt, die "jeder" FTP-Server von sich gibt.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Arby“ ()