Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   MAC-Adresse eine Gegenseite auslesen (https://www.delphipraxis.net/193993-mac-adresse-eine-gegenseite-auslesen.html)

Codehunter 4. Okt 2017 07:56

MAC-Adresse eine Gegenseite auslesen
 
Hallo!

Ich suche eine elegante Möglichkeit, mit einem Delphi-Programm die MAC-Adresse eines Gerätes zu ermitteln, welches per LAN-Crossover-Kabel (also ohne Switch, Router o.ä. dazwischen) mit der Netzwerkkarte des Rechners verbunden ist, auf dem das Delphi-Programm läuft. Dabei geht es um Identifikation im Prüffeld, also der Reihe nach eine größere Stückzahl an Geräten anschließen, MAC auslesen und Etikett mit kodierter MAC-Adresse ausdrucken. Es handelt sich dabei um ganz unterschiedliche Embedded-Geräte mit ganz unterschiedlichen Betriebssystemen. Der Prüfrechner befindet sich auch nicht auf Umwegen in einem größeren Netzwerk, sodass man sich auf Protokollebene "austoben" könnte ohne in einem Netzwerk "Konfusionismus" auszulösen ;-)

Allerdings bin ich in den Low-Level-Netzwerkprotokollen nicht so fit und wollte mir mal ein paar Ideen holen. Zuerst dachte ich an einen DHCP-Server, doch es ist nicht garantiert, dass die zu prüfenden Geräte immer als DHCP-Client konfiguriert sind. Daher denke ich mir müsste man den Prüfling mit einer Art Anfrage-Paket "anstupsen", welches immer beantwortet wird. Dann hätte man auch die MAC-Adresse der Gegenseite. Vielleicht gibt es ja auf UDP-Ebene etwas das man dafür nutzen könnte.

Nur um vorab eines klar zu stellen: Es geht hierbei nicht um sinnvolle Kommunikation mit dem Prüfling sondern ausschließlich um die Ermittlung der MAC-Adresse zum Zwecke des Labellings.

Grüße
Cody

Klaus01 4. Okt 2017 08:15

AW: MAC-Adresse eine Gegenseite auslesen
 
Guten Morgen,
geht das (http://en.pudn.com/downloads115/sour...482568_en.html) in die richtige Richtung?
Ansonsten könnte noch der arp (arp.exe) cache ausgelesen werden.


Grüße
Klaus

Der schöne Günther 4. Okt 2017 08:26

AW: MAC-Adresse eine Gegenseite auslesen
 
Der Arp-Cache wird ja auch nur gefüllt wenn überhaupt per IP kommuniziert wurde, oder?

Es geht ja eher darum ob man auf Ethernet-Schickt irgendetwas in den Raum werfen kann ("Broadcast") und definitiv eine Antwort bekommt.

generic 4. Okt 2017 08:28

AW: MAC-Adresse eine Gegenseite auslesen
 
Du bewegst dich unterhalb von IP daher fallen UDP und TCP aus.
Du brauchst auf jeden Fall ein Paket von der Gegenseite, ohne das sieht das nicht gut aus.

Ich dachte als erstes an WinPcap und dein Programm fängt alles auf was kommt.
Dann wertest du das MAC-Frame/Ethernet-Frame aus.

Codehunter 4. Okt 2017 08:31

AW: MAC-Adresse eine Gegenseite auslesen
 
Zitat:

Zitat von Klaus01 (Beitrag 1382543)
geht das (http://en.pudn.com/downloads115/sour...482568_en.html) in die richtige Richtung?
Ansonsten könnte noch der arp (arp.exe) cache ausgelesen werden.

Hmm Jain :-) Die obere Lösung setzt auf ICMP und das wiederum setzt auf IPv4 auf. Allerdings ist nicht gesagt, dass auf dem jeweiligen Prüfling ein funktionsfähiger IP-Stack nebst passender IPv4-Adresse vorhanden ist. Der Prüfling ist i.d.R. eine Blackbox, von der man nicht mal weiß ob es da eine IPv4-Adresse gibt und falls doch, in welcher Subnetzmaske die liegt.

ARP geht da schon eher in die richtige Richtung. Denn das liegt nach dem berüchtigten OSI-Schichtenmodell unterhalb von IPv4. Allerdings dient ARP ja auch wieder der IPv4-Adressauflösung. Ich müsste also noch etwas tiefer ansetzen. Vor meinem geistigen Auge werfe ich ein Broadcast-Paket in das gedachte Netzwerk (an dem im vorliegenden Fall nur zwei Teilnehmer angeschlossen sind) und die Gegenstelle antwortet mit einem Paket. Das kann ganz primitiv und völlig losgelöst von IPv4 sein, solange ich das Antwortpaket in mein Delphi-Programm bekomme und darin die MAC-Adresse des Prüflings enthalten ist.

Der schöne Günther 4. Okt 2017 08:40

AW: MAC-Adresse eine Gegenseite auslesen
 
Irgendwie ist es vielleicht ganz gut dass man auf Schicht 2 ein Gerät nicht zum Antworten "zwingen" kann, oder? Sollte nicht eigentlich auf allen Bauteilen mit RJ45-Buchse immer die MAC-Adresse in der Nähe aufgedruckt sein?

Codehunter 4. Okt 2017 08:47

AW: MAC-Adresse eine Gegenseite auslesen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1382548)
Sollte nicht eigentlich auf allen Bauteilen mit RJ45-Buchse immer die MAC-Adresse in der Nähe aufgedruckt sein?

Das stimmt schon. Man muss es nur aus der praktischen Perspektive sehen: Wenn man am Stück 100 oder mehr Prüflinge etikettieren soll und dabei manuell lauter winzig kleine Aufdrucke ablesen soll, passieren zwangsläufig irgendwann Fehler. Daher der Gedanke einer Automation.

Im Fall von ARP könnte ich ja theoretisch auch ~ 4,2 Milliarden Gratuitous-Pakete in das betreffende Netz "werfen". Eins für jede denkbare IPv4-Adresse. Quasi eine Art "Brute Force MAC Recognition". Allerdings weiß ich A) nicht wie lange das in der Praxis dauern würde und B) ob der Prüfling nicht evtl. irgendwann - aus Sicherheitsgründen - zu macht.

Wie gesagt, mir fehlen auf dieser Low-Level-Ebene die Erfahrungen.

Klaus01 4. Okt 2017 09:05

AW: MAC-Adresse eine Gegenseite auslesen
 
.. wenn die Prüfgeräte im Netwerk stecken - dann haben sie doch einen IP-Stack.
Die Prüfgeräte im eigenen Subnetz können dann doch mit einem icmp-broadcast detektiert werden.
Die Mac-Adressen sind dann im arp-cache zu finden (arp -a).
Allerdings auch die Mac-Adressen anderer IP-Geräte im Subnetz.

Grüße
Klaus

Codehunter 4. Okt 2017 09:16

AW: MAC-Adresse eine Gegenseite auslesen
 
Zitat:

Zitat von Klaus01 (Beitrag 1382551)
.. wenn die Prüfgeräte im Netwerk stecken - dann haben sie doch einen IP-Stack.
Die Prüfgeräte im eigenen Subnetz können dann doch mit einem icmp-broadcast detektiert werden.
Die Mac-Adressen sind dann im arp-cache zu finden (arp -a).
Allerdings auch die Mac-Adressen anderer IP-Geräte im Subnetz.

Bitte den GANZEN Thread lesen, nicht nur die letzten Posts. Danke :-)

Luckie 4. Okt 2017 13:59

AW: MAC-Adresse eine Gegenseite auslesen
 
Wie wäre eine Server-Client Lösung? Der Server fragt nach der Mac Adresse und der Client antwortet mit der Mac Adresse. Der einzige Nachteil ist natürlich, dass zusätzlich ein Programm auf den Clients eingerichtet werden muss. Aber wenn man die Rechner aufsetzt kann man das ja auch noch schnell machen. Bei einer entsprechenden Anzahl von Rechnern fällt das dann nicht mehr ins Gewicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz