Forum: Mikrocontroller und Digitale Elektronik MAC-Adresse über Arduino abfragen.


von Erik (Gast)


Lesenswert?

Hallo,

habe eine kleines Problem und bisher auch keine Lösung im Internet 
gefunden vielleicht stehe ich aber auch einfach auf dem Schlauch.

Ich möchte mit Hilfe eines Arduinos mit Ethernet Shield die Mac Adresse 
des angeschlossenen Gerätes auslesen und anzeigen (es wird immer nur ein 
Gerät angeschlossen). Das Anzeigen ist für mich kein Problem. Ich habe 
allerdings  in der Dokumentation und im Internet noch keine Infos über 
das auslesen von MAC-Adressen gefunden. Ich bedanke mich schon einmal im 
voraus für eure Hilfe.

Grüße Erik

: Verschoben durch Moderator
von Theor (Gast)


Lesenswert?

Broadcast oder Multicast wären Möglichkeiten, falls die angeschlossenen 
Geräte darauf reagieren.

von jo mei (Gast)


Lesenswert?

Theor schrieb:
> Broadcast oder Multicast wären Möglichkeiten, falls die angeschlossenen
> Geräte darauf reagieren.

Die Vielfalt der Protokoll-Möglichkeiten bezüglich Ethernet und
TCP wird dem Arduino-User leider vorenthalten, damit wäre er
womöglich überfordert und der Code würde unermesslich anwachsen.
Die vorgegebene Klasse bietet nur einige User-Datenübertragungen an.

Wenn ich mich recht erinnere ist es beim Arduino Ethernet-Shield
(basierend auf dem W5100/W5500) gar nicht möglich an das Roh-
Datenpaket (das eine Ethernet Adresse preisgeben könnte) zu
kommen da der Chip gleich die ausgepackten Netto-Daten liefert.

Mit dem altehrwürdigen ENC28J60 könnte man den Wunsch des TO
umsetzen, ist man dann aber mit einem Software-lastigen und nicht
Arduino-fähigem Design beschäftigt ....

Aber vielleicht habe ich auch zu wenig Ahnung und ich habe mir
nicht alles gemerkt was ich schon so erfahren habe ... YMMV

von Cptn Cisco (Gast)


Lesenswert?

Ich gucke einfach in die MAC-Address-Table meines Switches.

Eine generelle Methode, einem Netzwerkgeraet seine MAC-Adresse
abzupressen, gibt es sowieso nicht.
Weswegen dann auch regelmaessig ein kleiner Aufkleber auf
diesen Kisten klebt.

von (prx) A. K. (prx)


Lesenswert?

jo mei schrieb:
> Wenn ich mich recht erinnere ist es beim Arduino Ethernet-Shield
> (basierend auf dem W5100/W5500) gar nicht möglich an das Roh-
> Datenpaket (das eine Ethernet Adresse preisgeben könnte) zu
> kommen da der Chip gleich die ausgepackten Netto-Daten liefert.

Denke schon. Mindestens der W3100A hat einen "MAC Layer RAW Mode".

: Bearbeitet durch User
von jo mei (Gast)


Lesenswert?

(prx) A. K. schrieb:
> Denke schon. Mindestens der W3100A hat einen "MAC Layer RAW Mode".

Den Raw Mode gibt es schon aber dann musst du dir dein gesamtes
Vorgehen auf TCP selbst zusammenbauen und kannst nicht auf
die Chip-Implementierung aufbauen. Will heissen du musst erst
per Broadcast herausfinden wer denn alles da ist, dann kannst
du nach der Ethernet Adresse suchen die dir genehm ist.

Aber der TO will ja aus einem "angeschlossenen Gerät" die MAC
Adresse bekommen. Dann zeig mir mal wie das gehen soll. So
schnell mal einen Mix zwischen Socket Mode und Raw Mode
zusamenwurschteln geht da nicht. Ein Arduino User nutzt die
Ethernet-Lib (Klasse) weil er vom Netzwerken sowieso wenig
Ahnung hat bzw. wenig Lust hat sich programmiertechnisch dort
hineinzusteigern, wie soll er da mit dem Raw Mode eines W5xx
zurechtkommen? Die Arduino Ethernet Klasse liefert jedenfalls
nichts dazu.

Aber - nachdem du mir mit einen kleinen dürren Satz widersprochen
hast - du weisst es sicher (besser) und kannst mir das erklären.

von (prx) A. K. (prx)


Lesenswert?

In der Frage ging es ausschliesslich um die die MAC-Adresse. Wenn das 
Gerät freiwillig mal ein Paket schickt, üblicherweise kommt zunächst 
DHCP, dann kann man den Arduino bzw das Ethernet-Shield direkt an das 
Gerät anschliessen und muss nur auf ein Paket warten.

Umständlicher wirds wenn "stealth", oder wenn da noch mehr passieren 
soll, als nur die MAC Adresse rauszufinden.

: Bearbeitet durch User
von jo mei (Gast)


Lesenswert?

(prx) A. K. schrieb:
> den Arduino direkt an das Gerät anschliessen und muss nur auf ein
> Paket warten.

Jetzt brauchst du dem TO nur noch schnell ein "kleines" Beispiel-
Programm zeigen wie er das machen soll.

Wie bereits gesagt:

jo mei schrieb:
> Die Arduino Ethernet Klasse liefert jedenfalls nichts dazu.

Ach so, ich ahne etwas: du willst der Arduino-Klasse eine
Erweiterung in Form einer Ableitung spendieren damit der TO
endlich sein Ziel erreichen kann.

von (prx) A. K. (prx)


Lesenswert?

jo mei schrieb:
> Jetzt brauchst du dem TO nur noch schnell ein "kleines" Beispiel-
> Programm zeigen wie er das machen soll.

Anders als viele halte ich Arduino-Anwender nicht für dumm. Das müssen 
sie erst einmal beweisen.

Aber du hast bewiesen, dass eine Diskussion mit dir nichts bringt.

von jo mei (Gast)


Lesenswert?

(prx) A. K. schrieb:
> Anders als viele halte ich Arduino-Anwender nicht für dumm.

Danke. Mit deinen drei Beiträgen in diesem Thread hast du dem
TO in die Lage versetzt sein Ziel zu erreichen. Ich dagegen
habe nur vermutet dass es nicht so einfach geht und wurde eines
Besseren belehrt.

von c-hater (Gast)


Lesenswert?

Cptn Cisco schrieb:

> Eine generelle Methode, einem Netzwerkgeraet seine MAC-Adresse
> abzupressen, gibt es sowieso nicht.

Doch, natürlich: man kommuniziert mit ihm. Entweder ist es willig zu 
kommunizieren, dann muss es über kurz oder lang auch seine MAC 
rausrücken oder es will oder kann nicht kommunizieren, dann spielt es 
auch keine Rolle.

Nunja, es sind natürlich auch böswillige Devices denkbar. Die stören 
aber nur, wenn man das Konzept der Portsicherheit im LAN nicht umgesetzt 
hat. Dann können die auch nur abkacken. Spoofing (also das Segeln unter 
geklauter MAC-Identität) geht dann nicht mehr.

von Erik (Gast)


Lesenswert?

Danke für eure Antworten ich bin ja eh der Meinung jeder das Silizium 
für seinen Prozessor nicht selber gewonnen hat hat kein Recht 
irgendetwas zu Programmieren.

Aber jetzt zum eigentlichen Thema: werde mal eines der DHCPOFFER Pakete 
abfangen und mit Wireshark analysieren um zu sehen wo die MAC Adresse zu 
finden ist. Danach werde ich sehen wie man das Paket speichert und nur 
den richtigen Abschnitt anzeigt.

Grüße Erik

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Naja, also die MAC Adressen kommen in jedem Ethernetpaket gleich nach 
Takteinlauf und Startframedelimiter. Aber diese Info, die du aus 
Wireshark ziehen kannst, wird dir wenig weiterhelfen.

Cptn Cisco schrieb:
> Eine generelle Methode, einem Netzwerkgeraet seine MAC-Adresse
> abzupressen, gibt es sowieso nicht.

Ja, aeh...doch: ARP ist eigentlich das Protokoll, wie man bei einer 
bestimmten IP Adresse nach deren MAC-Adresse fragen kann.

Aber ich hab' keinen Blassen, ob deine HW/SW-Kombi erlaubt, einen ARP 
abzusetzen und die Antwort auszuwerten, bzw. in den ARP-Cache zu gucken 
- da wird sie eh' schon drinnenstehen, wenn's sowas gibt und schon mit 
dem fremden Geraet vor Kurzem gequakt wurde.

Gruss
WK

von foobar (Gast)


Lesenswert?

>Cptn Cisco schrieb:
>> Eine generelle Methode, einem Netzwerkgeraet seine MAC-Adresse
>> abzupressen, gibt es sowieso nicht.

Korrekt.

c-hater schrieb:
> Doch, natürlich: man kommuniziert mit ihm.

Dergute W. schrieb:
> Ja, aeh...doch: ARP ist eigentlich das Protokoll, wie man bei einer
> bestimmten IP Adresse nach deren MAC-Adresse fragen kann.

Beide Antworten setzen vorraus, dass auf dem Gerät IP bereits 
konfiguriert ist und man dessen IP-Adresse kennt.


Fakt ist, dass es auf dem Ethernet-Layer keine standardisierte Methode 
gibt, einem Gerät seine MAC-Adresse zu entlocken - die muß es freiwillig 
rausrücken.

Wenn man Glück hat, schickt es nach dem Anstöpseln irgendwelche Pakete 
raus (DHCP- oder BOOTP-Anfragen, ARP-checks, etc) - dann hat man 
gewonnen.  Wenn es ruhig bleibt, kann man versuchen, ihm ein Paket zu 
entlocken, z.B indem man Broadcast-Pings sendet (in der Hoffnung, dass 
IP konfiguriert ist).  Wenn das auch nicht klappt, ist man ziemlich 
aufgeschmissen und sollte den Aufkleber am Gerät suchen.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

foobar schrieb:
> Beide Antworten setzen vorraus, dass auf dem Gerät IP bereits
> konfiguriert ist und man dessen IP-Adresse kennt.

Jepp, stimmt. Habbich vorausgesetzt. Auch so Sachen, dass beide Geraete 
an einer jeweils fuer das Geraet geeigneten Energieversorgung haengen 
und eingeschaltet sind.
Und dass die Netzwerkkabel richtig angeschlossen sind, ggf. AutoMDX 
stattfand und sich die Teilnehmer auf ein Sorte Link geeinigt haben, 
setz' ich mal voraus.
Bin in meinem jugendlichen Leichtsinn von einem "normalen" Netzwerk 
ausgegangen.

Gruss
WK

von Peter S. (cbscpe)


Lesenswert?

So weit ist es schon gekommen, ein normales Netzwerk spricht IP. Früher 
war das umgekehrt, auf einem normalen Ethernet gab es kein IP :-). Ganz 
speziell war DecNET, das hat die BIA überschrieben und sich die MAC 
Adresse aus der Area und Knotennummer gebastelt.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.