Forum: Mikrocontroller und Digitale Elektronik NodeMCU MAC der Gegenstelle ermitteln


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Kugelfisch (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

eine kurze Beschreibung meines Problems. Über einen NodeMCU Controller 
steuere ich mehrere elektrische Verbraucher über eine HTML Seite, soweit 
funktioniert die Schaltung auch. Im nächsten Schritt möchte ich nun das 
Steuerbefehle nur von bestimmten Geräten akzeptiert werden, daher habe 
ich mir überlegt die MAC Adresse des Senders als "Schlüsssel" zu 
verwenden. Meine Frage ist nun, wie kann ich mit der Programmiersprache 
LUA die MAC Adresse des Senders ermitteln?

Gibt es evtl. eine andere Möglichkeit dieses Problem zu lösen?

Danke
Kugelfisch

: Verschoben durch Moderator
von Gerd E. (robberknight)


Bewertung
0 lesenswert
nicht lesenswert
Kugelfisch schrieb:
> Im nächsten Schritt möchte ich nun das
> Steuerbefehle nur von bestimmten Geräten akzeptiert werden, daher habe
> ich mir überlegt die MAC Adresse des Senders als "Schlüsssel" zu
> verwenden.

keine gute Idee. Jeder (oder jedes bösartige Programm) in Deinem LAN 
kann ganz einfach die verwendeten MAC-Adressen im LAN herausbekommen, 
denn sie werden in ARP-Broadcasts an alle Stationen gesendet. Dann kann 
der Angreifer einfach die MAC eines erlaubten Geräts verwenden und 
bekommt Zugriff.

Verwende lieber ein Passwort zum Zugriffsschutz, so wie es gängig ist.

Besser wäre natürlich noch zusätzlich die Verbindung per HTTPS zu 
verschlüsseln.

von Kugelfisch (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

in meiner Anwendung geht es um die Lichtsteuerung der Kinderzimmer, ich 
möchte mit meiner MAC Abfrage nur verhindern das Kind_A bei Kind_B das 
Licht ein bzw. ausschaltet. Eine Passwortabfrage reduziert aus meiner 
Sicht die intuitive Bedienung der Lichtsteuerung.

Danke
Kugelfisch

von Joachim S. (oyo)


Bewertung
0 lesenswert
nicht lesenswert
Kugelfisch schrieb:
> Hallo,
>
> in meiner Anwendung geht es um die Lichtsteuerung der Kinderzimmer, ich
> möchte mit meiner MAC Abfrage nur verhindern das Kind_A bei Kind_B das
> Licht ein bzw. ausschaltet. Eine Passwortabfrage reduziert aus meiner
> Sicht die intuitive Bedienung der Lichtsteuerung.

Die MAC des Clients herauszufinden scheint in der NodeMCU/LUA-API 
tatsächlich derzeit nicht vorgesehen zu sein.

Wenn es jetzt aber eh keine hochsichere Lösung sein muss, sondern es im 
Grunde genügt, dass die eigenen Kinder nicht sofort darauf kommen, wie 
es überlistet werden kann, dann hätte ich folgende Ideen:

1. Weise jeder MAC-Adresse eine feste IP zu, so dass es eine 
1:1-Zuordnung von MAC- und IP-Adressen gibt, und macht die 
Identifizierung über die IP-Adresse statt über die MAC.
2. Identifiziere die Clients durch Cookies.
3. oder identifiziere die verschiedenen Clients z.B. durch 
Fingerprinting gewisser HTTP-Header, die sie bei den HTTP-Requests 
senden.

Wobei die sicherste Methode vermutlich Cookies wären.

von 50cent (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Joachim S. schrieb:
> Die MAC des Clients herauszufinden scheint in der NodeMCU/LUA-API
> tatsächlich derzeit nicht vorgesehen zu sein.

naja, vielleicht doch mal das Manual genauer lesen/verstehen...?
https://nodemcu.readthedocs.io/en/master/en/modules/wifi/#wifistagetmac

von Joachim S. (oyo)


Bewertung
0 lesenswert
nicht lesenswert
50cent schrieb:
> Joachim S. schrieb:
>> Die MAC des Clients herauszufinden scheint in der NodeMCU/LUA-API
>> tatsächlich derzeit nicht vorgesehen zu sein.
>
> naja, vielleicht doch mal das Manual genauer lesen/verstehen...?
> https://nodemcu.readthedocs.io/en/master/en/modules/wifi/#wifistagetmac

Der Umstand, dass Du auf
1
wifi.sta.getmac()
 verweist, lässt eher vermuten, dass Du selbst das Manual und/oder die 
Problemstellung genauer lesen/verstehen solltest.

von Löter (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von Klaus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Naja, wenn der Sender seine eigene MAC in der Payload mit sendet, kann 
der Empfänger die erkennen, ohne in die Tiefen des TCP/IP Stacks 
hinabtauchen zu müssen. Damit ließe das gewünschte erreichen.

Der TO könnte auch versuchen, ob ihm

https://nodemcu.readthedocs.io/en/master/en/modules/wifi/#wifiapgetclient

weiterhilft.

MfG Klaus

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Klaus schrieb:
> Naja, wenn der Sender seine eigene MAC in der Payload mit sendet,

Da der Sender vermutlich irgendwelche Notebooks oder Tablets mit darauf 
laufendem Webbrowser sind, wird das nicht drin sein.

von Joachim S. (oyo)


Bewertung
0 lesenswert
nicht lesenswert
Löter schrieb:
> http://www.esp8266.com/viewtopic.php?p=48223#p48223

Mit Deinem Posting empfiehlst Du offenbar, das über das Event
1
wifi.eventmon.AP_STACONNECTED
 zu machen.
Stattdessen könnte man auch auch gleich die Daten aus
1
wifi.ap.getclient()
nutzen, das wäre einfacher.

Aber Problem bei beiden Lösungen: Das funktioniert halt nur, wenn der 
ESP im Access-Point-Modus betrieben wird - und ich gehe einfach mal 
davon aus, dass er stattdessen im Station-Modus betrieben werden soll.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.