MAC-Adressen (remote) auslesen über ipconfig, getmac, wmic, arp

MAC-Adresse in msinfo32Die Media-Access-Control-Adresse, oder kurz MAC-Adresse, ist bekanntlich die weltweit eindeutige ID für einen Netzwerkadapter. Sie wird bei einer Reihe von Management-Aufgaben benötigt, beispielsweise wenn man den Zugriff auf ein WLAN nur bestimmten Rechnern vorbehalten möchte oder für die Zuordnung von Images bei der Windows-Installation mit den Deployment-Services (WDS). Um die MAC-Adresse herauszufinden, bietet Windows gleich mehrere Möglichkeiten.

In der Regel möchte man die MAC-Adresse einer NIC so erhalten, dass man sie relativ einfach in eine andere Anwendung, typischerweise in eine Verwaltungskonsole übernehmen kann. Dafür sind die GUI-Optionen wie msinfo32.exe zu umständlich, so dass sich für diese Aufgabe die Tools der Kommandozeile empfehlen.

ipconfig: am öftesten empfohlen, aber wenig geeignet

In den meisten Foren und Blog-Einträgen findet sich die Empfehlung, die MAC-Adresse mit Hilfe von ipconfig auszulesen. Um sie angezeigt zu bekommen, muss man den Schalter /all verwenden, so dass das Programm einen Wust von Informationen ausspuckt. Das gilt besonders dann, wenn mehrere (virtuelle) Adapter vorhanden sind. Um die Suche in den Ergebnissen abzukürzen, sollte man sie zumindest filtern:

ipconfig /all|findstr /V 00-00-00|findstr Physikalische

Der erste Aufruf von findstr eliminiert alle Zeilen, die leere MAC-Adressen enthalten, die zweite findet alle verbliebenen Zeilen mit den IDs. Die Verwendung von ipconfig ist nicht nur umständlich, sondern kann MAC-Adressen obendrein nicht remote herausfinden.

getmac: für diesen Zweck geschaffen

Unter den Windows-Bordmitteln ist getmac das Tool, das genau dafür vorgesehen ist, MAC-Adressen zu ermitteln. Es ist einfach zu verwenden, kann PCs auch remote abfragen und gibt die Ergebnisse auf Wunsch in strukturierter Form aus:

getmac /s 192.168.23.214 /fo csv /v

In diesem Beispiel wird die MAC-Adresse des PCs mit der IP-Adresse 192.168.23.214 ermittelt und im CSV-Format (Parameter /fo csv) in ausführlicher Darstellung (/v) ausgegeben. Die solcherart strukturierten Informationen könnte man etwa in eine Datei umleiten und von dort mit setx in einer Umgebungsvariable speichern.

Damit das Auslesen auch remote funktioniert, ist es wichtig, die Firewall auf dem entfernten Rechner so zu konfigurieren, dass sie eingehende WMI-Anfragen zulässt. Erhält man die Meldung "Zugriff verweigert", dann kann man die Firewall mit dem Befehl

netsh advfirewall firewall set rule group="Windows-Verwaltungsinstrumentation (WMI)" new enable=yes

entsprechend einstellen.

Mit wmic NIC-Eigenschaften auslesen

Bei wmic handelt es sich um einen relativ spartanischen Client für WMI-Abfragen. Er erlaubt auch das Auslesen von MAC-Adressen über das Alias NIC:

wmic /node:192.168.23.214 NIC get description,macaddress

Diese Abfrage extrahiert aus den umfangreichen Informationen, die sich mit WMI über Adapter sammeln lassen, gezielt die Beschreibung und die MAC-Adresse. Alternative Attribute, die man damit ebenfalls ermitteln kann, wären etwa manufacturer oder productname.

Der Vorteil von wmic gegenüber den anderen Tools besteht darin, dass sich nur die gewünschten Informationen exakt abrufen lassen. Möchte man beispielsweise ausschließlich die MAC-Adressen der physikalischen Adapter und nicht der zahlreichen virtuellen Schnittstellen, dann kann man diese mit einer Abfrage wie

wmic /node:192.168.23.216 NIC where PhysicalAdapter='true' get description,macaddress

bekommen. Auch hier ist natürlich zu beachten, dass die Firewall auf entfernten Rechnern die WMI-Anfragen zulassen muss.

MAC- zu IP-Adresse finden mit ARP

Das Adress Resolution Protocol (ARP) dient primär dazu, die MAC-Adressen zu bestimmten IP-Adressen zu finden. Diese Zuordnung ist entscheidend, wenn ein PC im Ethernet ein IPv4-Paket sendet möchte, weil er dieses nur mit Kenntnis der MAC-Adresse zustellen kann. Diesen Umstand kann man sich zunutze machen, indem man einen Rechner über das Netzwerk kontaktiert und dann mit Hilfe des arp-Befehls seine MAC-Adresse ausliest. Zu diesem Zweck reicht schon ein ping, um die Maschine nachher in der arp-Liste zu finden:

ping -4 192.168.23.216
arp -a 192.168.23.216

Die Ausgabe von arp lässt sich nicht wie bei getmac oder wmic formatieren, ist aber übersichtlich, weil sie nur die wesentlichen Informationen enthält. Der große Vorteil von arp gegenüber den WMI-basierten Tools besteht darin, dass man die Firewall auf den Zielrechnern nicht extra konfigurieren muss.

2 Kommentare

Bild von fireshadow
fireshadow (Besucher) sagt:

Ich habe das wmic-Beispiel mit where gerade mal ausprobiert, und bin darüber gestolpert, dass es unter Windows XP scheinbar keine Eigenschaft PhysicalAdapter gibt (unter Windows 7 funktioniert's). Auf den ersten Blick (ich habe allerdings nicht in die Doku gesehen) scheint AdapterTypeId=0 ein brauchbarer Ersatz zu sein.

Unabhängig davon: Ein sehr nützlicher Artikel!

Bild von Leonardo
Leonardo (Besucher) sagt:

[getmac] gefällt mir weniger, da es Admin-Rechte benötigt um den Client auszulesen. Arbeitet man selbst als normaler User muss man das Admin-Passwort im Klartext mitgeben. Was gibt es einfacheres als [Arp -a]???

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht angezeigt. Wenn mit Ihrer angegebenen Mail-Adresse ein Gravatar verknüpft ist, dann wird dieser neben Ihrem Kommentar eingeblendet.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Zeilen und Absätze werden automatisch erzeugt.
  • Mail-Adressen werden im Seitenquelltext unkenntlich gemacht, um sie vor dem automatischen Erfassen durch Spammer zu schützen.

Weitere Informationen über Formatierungsoptionen