Netzwerk scannen und Geräte info auslesen

Alle Fragen zur Netzwerkkommunikation
Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von m.fuchs »

Maik81ftl hat geschrieben:
m.fuchs hat geschrieben:Und wozu das Ganze? Benutz doch einfach das Programm, warum willst du es in FPC noch einmal neu schreiben?

Liegt wohl daran, das ich Primär Only FPC progge und Quasi nur diese Umgeschriebene Function nutzen will.

Nochmal: Warum willst du dieses Programm neu schreiben, anstatt es zu benutzen? Und aus den damit gewonnenen Daten/Erkenntnissen dein ursprüngliches Problem zu lösen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von Maik81ftl »

m.fuchs hat geschrieben:
Maik81ftl hat geschrieben:
m.fuchs hat geschrieben:Und wozu das Ganze? Benutz doch einfach das Programm, warum willst du es in FPC noch einmal neu schreiben?

Liegt wohl daran, das ich Primär Only FPC progge und Quasi nur diese Umgeschriebene Function nutzen will.

Nochmal: Warum willst du dieses Programm neu schreiben, anstatt es zu benutzen? Und aus den damit gewonnenen Daten/Erkenntnissen dein ursprüngliches Problem zu lösen.


Weil ich die Daten aus dem Programm NICHT ohne Externe File in meine Programm reinbekommen :?: :!:
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von m.fuchs »

Maik81ftl hat geschrieben:
m.fuchs hat geschrieben:Nochmal: Warum willst du dieses Programm neu schreiben, anstatt es zu benutzen? Und aus den damit gewonnenen Daten/Erkenntnissen dein ursprüngliches Problem zu lösen.

Weil ich die Daten aus dem Programm NICHT ohne Externe File in meine Programm reinbekommen :?: :!:

Warum willst du die Daten von snmpdump in deinem Programm haben? Das war doch gar nicht deine ursprüngliche Idee. In dem ELV-Forum hast du nach der MIB-Tabelle für das Gerät gefragt. Jemand hat dir dort snmpdum empfohlen, damit du die an die entsprechenden Daten kommst. Mit diesen Daten kannst du dann später dein Programm das Gerät abfragen lassen. Aber dazu brauchst du snmpdump doch nicht mehr.

Oder hat sich deine Anforderung wieder einmal total verändert?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von mschnell »

Maik81ftl hat geschrieben:Weil ich die Daten aus dem Programm NICHT ohne Externe File in meine Programm reinbekommen :?: :!:

Ich habe 'mal von einer Möglichkeit gelesen, eine Programm-Datei als Ressource in ein Lazarus (oder Delphi) Programm einzubauen und bei bedarf zu starten. Vermutlich muss man einen Memory-File kreieren, die Bytes aus der Ressource da hinein kopieren, Datei-Porperties setzen und es dann starten.

-Michael

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von Maik81SE »

du meinst via Therad?! davon hab ich auch schon gelesen. Trau mich aber zugegeben nicht wirklich an sowas ran. schon garnicht, wenn ich Plaformübergreifend arbeite.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von mschnell »

Nö, nicht via Thread, sondern einfach als Programm-Aufruf (weil das Ding ja ein Executable ist und via Betriebssystem gestartet werden muss). Den Output bekommt man dann durch eine Pipe in das aufrufende Programm. Die Methode für den Programmaufruf ist (glaube ich) in Lazarus mit TProcess System-unabhängig enkapsuliert.

-Michael

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von Maik81ftl »

Mist... Nicht mal eine gescheide Anleitung, wie man sich das Proggi überhaupt installiert. Bei sowas bekomm ich doch gleich mal wieder mega affen geile Laune...
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von Maik81ftl »

Moin,

Nach langer suche und einigen Teles, hab ich endlich erfahren, das ich für das Gerät keine MIB bekomme, da es keine gibt. Dennoch frage ich mich, wie z.B ein Router an den Namen und die IP kommt.
Da ich es auf die von mit gewünschte Art und weise machen kann, werd ich wohl den Umständlichen Weg gehen müßen. (Ping)

Diesbezüglich würde ich auch gerne wissen, ob bei den String der Namen eingegeben werden muß oder ob da eine IP-Adresse reicht, bzw. ob dies mit dem überhaupt gehen könnte.

http://synapse.ararat.cz/doc/help/pingsend.html

Gruß Maik
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von mschnell »

Maik81ftl hat geschrieben:t. Dennoch frage ich mich, wie z.B ein Router an den Namen und die IP kommt.


Dem Router ist das völlig Wurscht. Der arbeitet nicht mit Namen und der Geräte-Teil der IP-Adresse, sondern nur mit Netzwerk-Adressen.

Bei der DHCP-Kommunikation gibt der DHCP-Server (der oft auf derselben Hardware wie ein Router läuft) dem Gerät eine IP-Adresse und das Gerät kann (muss aber nicht) dem DHCP-Server einen Namen übermitteln.

Der DHCP-Server übergibt dann (wenn das so konfiguriert ist) dem DNS-Server (der oft ebenfalls auf derselben Hardware wie ein Router läuft) den Namen und die IP-Adresse.

-Michael

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von Maik81ftl »

Auf deutsch...

ich muß Quasi den DHCP-Server eines X-Beliebigen Routers, Servers, o.d.g. auslesen und hoffen, das ich von Ihm genau die info's herhalten, die ich benödige? wird in anbetracht der folgenden Daten in sofern schwer, da die einzige Const die MAC ist. IP wird laut deines Post vom DHCP vergeben und Name ist eine Gut Glück angelegenheit.

Host Name IP Address MAC Address Lease
maik81se-laptop 10.0.0.4 0C:EE:E6:CE:11:66 00:00:00
NPIE47291 10.0.0.50 00:21:5A:E4:72:91 00:00:00
ips1 10.0.0.80 00:1A:22:00:09:83 00:00:00
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von mschnell »

DHCP-Server kann man nicht auslesen, von denen kann man nur IP-Information für die eigene MAC-Adresse bekommen.

Die Tabelle, die Du zeigst, ist vermutlich eine proprietäre Ausgabe eines bestimmten Kombi-Gerätes. Nichts "allgemein Gültiges". Eine direkte Zuordnung zwischen Mac-Adresse und Namen gibt es - soweit ich weiß - offiziell nicht.

-Der DHCP-Server kennt nur eine Zuordnung zwischen MAC-Adressen und IP-Adressen
-Der Name-Server kennut nur eine Zuordnung zwischen Namen und IP-Adressen
-Der Router kennt nur eine Zuordnung zwischen den (meist oberen) "Netzwerk"-Bits der IP-Adressen.
-Der IP-Stack jedes Gerätes kennt eine Zurdnung zwischen IP-Adresse der Kommunikationspartner und der Mac-Adresse des nächsten Routing Ziels, die er dynamisch mit ARP-Requests erfährt.

Namen speichert "offiziell" (entsprechend RFC < http://de.wikipedia.org/wiki/Request_for_Comments >) nur der DNS.

Voraussetzung:
1) das zu findende Gerät muss auf DHCP konfiguriert sein
2) ein DHCP Server muss laufen
3) ein DNS (Name Server) muss laufen
4) das zu findende Gerät muss seinen Namen bei der DHCP-Kommunikation bekanntgeben
5) der DHCP-Server und der DNS müssen so konfiguriert sein, dass der DHCP-Server erkannte Geräte-Namen zusammen mit der IP-Adresse an den DNS weitergibt, damit der sie speichert

Dann wird der DNS auf eine normale DNS-Anfrage mit dem Namen die IP-Adresse ausgeben.

Wenn nun
6) der DHCP-Server den "reverse DNS Request" unterstützt kannst Du

mit einer "reverse DNS Anfrage" zu einer bekannten IP-Adresse den Namen erfahren.

Eine "reverse DNS Anfrage" macht z.B. "tracert". Damitz kannst Du testen, ob die Voraussetzungen alle erfüllt sind.

Ob z.B. LNET oder INDY reverse DNS als Funktionen anbieten, weiß ich nicht. Wenn nicht, musst Du das mit einem TCP-Socket selbst programmieren.

Die zu einer IP-Adresse passende MAC-Adresse-Adresse bekommst Du durch einen ARP-Request vom Gerät selber. Wenn das in einem anderen IP-Netz sitzt, bekommst Du die MAC-Adresse des Routers.

Ich weiß nicht, ob es einen "Reverse-ARP" Request gibt. Wenn Du aber mit dem Gerät per IP kommunizierst, ist die MAC-Adresse in der ARP-Tabelle des IP-Stacks auf Deinem Rechner hinterlegt und da vermutlich irgendwie auslesbar.

-Michael

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von Socke »

mschnell hat geschrieben:Namen speichert "offiziell" (entsprechend RFC < http://de.wikipedia.org/wiki/Request_for_Comments >) nur der DNS.

Daneben gibt es noch weitere Netzwerkprotokolle um Namen zwischen den Netzwerkgeräten auszutauschen. Beispiele sind NetBIOS, WINS, Zeroconf (Bonjour/Avahi).

Daher gilt für dich vermutlich der alte Grundsatz: ersteinmal mit der Materie beschäftigen, dann zusammenfassen, was du genau tun willst und zum Schluss erst implementieren. Wenn du auch noch Punkt 2 und 3 der Kathedrale und des Basars beachtest, musst du vermutlich gar nicht alles selbst implementieren.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von Maik81ftl »

Socke hat geschrieben:Daneben gibt es noch weitere Netzwerkprotokolle um Namen zwischen den Netzwerkgeräten auszutauschen. Beispiele sind NetBIOS, WINS, Zeroconf (Bonjour/Avahi).

NetBIOS, WINS.: eher Windowsbezogen :(
Zeroconf: Könnte helfen, ist aber so wie ich das vernehme schon Etwas, was fertig ist.

Socke hat geschrieben:Daher gilt für dich vermutlich der alte Grundsatz: ersteinmal mit der Materie beschäftigen, dann zusammenfassen, was du genau tun willst und zum Schluss erst implementieren. Wenn du auch noch Punkt 2 und 3 der Kathedrale und des Basars beachtest, musst du vermutlich gar nicht alles selbst implementieren.

Hmmm, den kenn ich zugegeben noch garnicht :D danke für den Link.

Suche schon über alle Ecken, die mir einfallen, I-Net, diverse Bücher, u.s.w. aber kleiner Programmschnippsel find ich kein µ und wenn denne nur in C, oder MSDN.

Indy selber bekomm ich perdu nicht zum Laufen, sonst hätte ich auch mal da geschaut. Von daher den Langen weg erst mal versuchen (anping, auslesen und answerten und weitersuchen.) So kommen zwar mehrere Versionen zusammen, aber so findet Entwickling ja auch statt.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von Socke »

Maik81ftl hat geschrieben:
Socke hat geschrieben:Daneben gibt es noch weitere Netzwerkprotokolle um Namen zwischen den Netzwerkgeräten auszutauschen. Beispiele sind NetBIOS, WINS, Zeroconf (Bonjour/Avahi).

NetBIOS, WINS.: eher Windowsbezogen :(
Zeroconf: Könnte helfen, ist aber so wie ich das vernehme schon Etwas, was fertig ist.

Dein Ziel sollte es nicht sein, so etwas komplett neu zu entwickeln, sondern das, was schon da ist wieder zu verwenden.

Maik81ftl hat geschrieben:
Socke hat geschrieben:Daneben gibt es noch weitere Netzwerkprotokolle um Namen zwischen den Netzwerkgeräten auszutauschen. Beispiele sind NetBIOS, WINS, Zeroconf (Bonjour/Avahi).

NetBIOS, WINS.: eher Windowsbezogen :(
Zeroconf: Könnte helfen, ist aber so wie ich das vernehme schon Etwas, was fertig ist.

Socke hat geschrieben:Suche schon über alle Ecken, die mir einfallen, I-Net, diverse Bücher, u.s.w. aber kleiner Programmschnippsel find ich kein µ und wenn denne nur in C, oder MSDN.

Dein Problem bezieht sich wohl kaum auf l-Net oder auf Indy (abgesehen vom Aufsetzen in Lazarus). Es geht wohl vielmehr um grundlegende Netzwerkkommunikation. Dass du da mehr C findest solte dir Aufgrunde der Bedeutung Cs nicht seltsam vorkommen. Hier solltest du unbedingt Zeit investieren, um zumdindest C-Code verstehen zu können.

Wenn Windows eine entsprechende API bereitstellt um bereits implementierte Methoden, die genau dein Problem lösen, anderen Entwicklern zugänglich zu machen, wird das vermutlich in MSDN dokumentiert sein.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Netzwerk scannen und Geräte info auslesen

Beitrag von mschnell »

Wenn Du das Gerät, das Du suchen willst, selber programmierst, ist eine schöne Methode, es anhand der MAC-Adresse zu finden, einen UDP-Broadcast zu senden, der im Daten-Bereich (u.a.) die Mac-Adresse des Ziel-Gerätes hat. Das angefragte Gerät kann dann mit einem UDP-Paket antworten.

Das funktioniert meist nur, wenn kein Router dazwischen ist, weil Router normalerweise Broadcasts nicht weiterleiten,

Wenn Du die Software des gesuchten Gerätes nicht selbst machst, sehe ich ziemlich schwarz dafür, mit einigermaßen standardmäßigen Mitteln aus der MAC-Adresse den Namen zu generieren.

Allenfalls könntest Du den ARP-Cache auf dem PC auslesen (keine Ahnung, wie das geht) kurz nachdem das Gerät (das dabei am selben Ethernet-Segment hängen muss) eingeschaltet wurde. Es sollte dann einen ARP-Broadcast machen und seine MAC-Adresse und IP-Adresse sollte eine Zeit lang im ARP-Cache aller angeschlossener Geräte stehen. Dann weißt Du IP-Adresse und kannst eine Reverse Name Resolution mit dem DNS machen. Ob der dann aber schon den Namen vom DHCP-Server bekommen hat, ist nicht sicher. Das kann dauern (falls das System überhaupt so konfiguriert ist).

Soweit ich weiß, kann ein DHCP-Server auch Geräten "on the fly" eine neue IP-Adresse verpassen. Wenn der DHCP-Server das Gerät ansprechen kann, solltest Du das auch können. Vielleicht kannst Du es es ja zur Abgabe seines Namens veranlassen. Ziemlich exotisch, aber vielleicht denkbar. Müsstest Du Dir die DHCP RFC durchlesen. (Ich habe zwei dicke Wälzer über TCP-Protokolle, da steht's bestimmt auch drin...)

-Michael

Antworten