Die MAC-Adresse eines angeschlossenen, unbeschrifteten, nicht konfigurierten, nicht konfigurierbaren Ethernet-Geräts abrufen?

Die MAC-Adresse eines angeschlossenen, unbeschrifteten, nicht konfigurierten, nicht konfigurierbaren Ethernet-Geräts abrufen?

Angenommen, Sie haben eine eingebettete Platine mit Ethernet an den Ethernet-Port Ihres Laptops angeschlossen. Sie wissen (noch) nichts über die Netzwerkkonfiguration. Sie wissen, dass es bootet, aber es ist ohne Monitor und hat nur einen Ethernet-Port. Es hat (noch) KEINE IP-Adresse.

Wie finden Sie die MAC-Adresse des Geräts heraus?

Ich habe mir arp, arping, arp-scan und arpwatch angesehen. Das einzige, was ich gefunden habe, ist die Verwendung von tshark und das manuelle Durchkämmen des Spew.

Antwort1

Die Ausführung mit „normal“ tsharkoder „ tcpdumpnormal“ führt zu einer unordentlichen Ausgabe, da der gesamte von Ihrem Computer ausgehende Datenverkehr ebenfalls protokolliert wird.

Versuchen

tcpdump -i eth0 -lenq 'ether src not <your_mac>'
  • -eerfasst auch den Ethernet-Frame
  • -lleert den Standardausgabepuffer sofort.
  • -nHostnamen nicht auflösen
  • -qsei leiser.
  • Ersetzen Sie es <your_mac>durch die MAC-Adresse Ihrer lokalen Schnittstelle, wie sie beispielsweise gefunden wird ip addr show.
  • offensichtlich durch die richtige Schnittstelle ersetzen eth0. Wenn Sie Windows verwenden, verwenden Sie , tshark -Dum alle Schnittstellen aufzulisten.
  • (Bearbeiten)Unter Linux können Sie tcpdumpanstelle der Installation verwenden tshark, wobei das gesamte wiresharkPaket installiert werden muss. tcpdumpsollte auf Ubuntu vorinstalliert sein (es befindet sich im Metapaket ubuntu-standard).

Alternative:Wenn Sie nur Quell-MAC-Adressen als Ausgabe wünschen, tun Sie dies (inspiriert und schamlos angepasst durch den Kommentar des OP unten).

ETH=eth0;MAC=$(cat /sys/class/net/$ETH/address); tcpdump -lenq -i $ETH "ether src not $MAC" | awk '{print $2}'

Am besten startest du die Aufnahme ohne Link und steckst dann das Kabel ein.

Ich glaube nicht, dass man das Mithören des Datenverkehrs umgehen kann. Der Grund, warum ARP fehlschlägt, ist, dass das Gerät keine IP-Adresse hat und nicht auf ARP-Anfragen antwortet.

Eine weitere mögliche Lösung wäre, das Gerät an einen verwalteten Switch anzuschließen und die MAC-Adresstabelle auszulesen, aber ich glaube, das ist für Sie keine Option.

Um erkannt zu werden, muss das Gerät in jedem FallmancheArt von Ethernet-Verkehr. Wenn Sie Glück haben, sendet es eine DHCP/Bootp-Erkennung, die Sie abhören können.

(Bearbeiten)Warum verfügt der Host nicht über eine MAC-Tabelle wie ein Switch? Das ist auch nicht nötig, da es sich nicht um einen Switch handelt. Anders als bei einem Switch wird die Entscheidung, welche Schnittstelle einen Ethernet-Frame ausgibt, im Voraus anhand der Routing-Tabelle getroffen. Das IP-Paket wird nach der ARP-Suche in einen entsprechenden Frame verpackt.

Natürlich können Sie Ihre Maschine in einen richtigen L2-Switch verwandeln. Sie können eine Brücke zwischen mehreren physischen Schnittstellen erstellen. Ich habe ein bisschen damit herumgespielt und wie sich herausstellt, können Sie auf diese Weise eine schöne MAC-Tabelle erhalten!

  1. bridge-utilsAus dem Repository installieren .

  2. Erstellen Sie eine neue Ethernet-Brücke in/etc/network/interfaces

     auto br0
     iface br0 inet static # dhcp goes as well
      address ...
      network ...
      bridge_ports eth0
      up /sbin/brctl setageing br0 300
      up /sbin/brctl stp br0 0
    

Dies definiert eine „Brücke“ (es gibt eigentlich keine Brücke – nur eine Schnittstelle) ohne Spanning-Tree stp br0 off. Adressen verfallen nach 300 Sekunden. Stellen Sie diesen Wert nach Belieben ein, aber nicht zu niedrig.

  1. Bringen Sie die Brücke hoch:ifup br0

  2. Überprüfen Sie, ob es funktioniert, brctl showund zeigen Sie die MAC-Tabelle an:

     brctl showmacs br0
    
  3. Gewinn (?)

Antwort2

Sie können entweder Wireshark verwenden, um den gesamten Datenverkehr zu erfassen und ihn nach BootP zu filtern, oder -edie Option zum Drucken von Link-Layer-Informationen und BootP-Filtern mit TCPdump verwenden:

http://www.tcpdump.org/tcpdump_man.html

sudo tcpdump -i any port bootps -e

verwandte Informationen