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“ tshark
oder „ tcpdump
normal“ 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>'
-e
erfasst auch den Ethernet-Frame-l
leert den Standardausgabepuffer sofort.-n
Hostnamen nicht auflösen-q
sei leiser.- Ersetzen Sie es
<your_mac>
durch die MAC-Adresse Ihrer lokalen Schnittstelle, wie sie beispielsweise gefunden wirdip addr show
. - offensichtlich durch die richtige Schnittstelle ersetzen
eth0
. Wenn Sie Windows verwenden, verwenden Sie ,tshark -D
um alle Schnittstellen aufzulisten. - (Bearbeiten)Unter Linux können Sie
tcpdump
anstelle der Installation verwendentshark
, wobei das gesamtewireshark
Paket installiert werden muss.tcpdump
sollte auf Ubuntu vorinstalliert sein (es befindet sich im Metapaketubuntu-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!
bridge-utils
Aus dem Repository installieren .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.
Bringen Sie die Brücke hoch:
ifup br0
Überprüfen Sie, ob es funktioniert,
brctl show
und zeigen Sie die MAC-Tabelle an:brctl showmacs br0
Gewinn (?)
Antwort2
Sie können entweder Wireshark verwenden, um den gesamten Datenverkehr zu erfassen und ihn nach BootP zu filtern, oder -e
die 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