MAC-Adresse über Arduino abfragen.

Gast #6501594
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
Gast #6501740
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
Gast #6501772
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.
Gast #6501892
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.
#6501909
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.
Gast #6501915
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.
Gast #6501948
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.
Gast #6503090
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
#6503125
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
Gast #6503174
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.
#6503202
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren