Mit der Windows PowerShell sämtliche erkannten MAC-Adresse auslesen – ARP-Cache

Die MAC-Adresse mit der Windows PowerShell aulesen und auf Erreichbarkeit prüfen

Die MAC-Adresse ist die eindeutige physikalische Adresse von jedem Netzwerkadapter. Generell lässt sich diese per cmd oder auch PowerShell sehr leicht auslesen und wird z.B. benötigt, wenn man im DHCP Server eine bestimmte Adresse reservieren möchte. Jeder PC besitzt weiterhin einen Cache, in welchem sämtliche erkannten MAC Adressen für eine gewisse Zeit gespeichert werden. Allgemein lässt sich dieser Cache über die cmd mit dem folgenden Befehl auslesen.

arp -a

ARP ist dabei das sogenannte Address Resolution Protocol. Dabei ermittelt dieses Protokoll aus einer IP-Adresse die zugehörige MAC-Adresse und speichert die Ergebnisse in den ARP-Cache ab. Generell wird das Protokoll nur für IPv4 Adressen verwendet. Bei IPv6 Adressen ist hierfür das Neigbor Discovery Protocol (NDP) zuständig.

Oft ist es jetzt durchaus interessant sämtliche erkannten MAC Adressen eines Rechners auflisten zu lassen. Sei es jetzt um evtl. Fehler zu entdecken, Hacking Angriff wie ARP Spoofing oder nur um ein bestimmtes Netzwerkgerät aufzufinden. Die Windows Powershell bietet hierfür das Cmdlet Get-NetNeighbor an. Der Vorteil liegt bei der PowerShell natürlich darin, dass man viele Möglichkeiten hat, die Suche zu verfeinern.

Get-NetNeighbor

Obiges Cmdlet liefert nun alle erkannten MAC-Adressen (LinkLayerAddress) aus. Da die Liste durchaus sehr lang und unübersichtlich sein kann, gibt es verschiedene Möglichkeiten um die Ausgabe etwas übersichtlicher zu gestalten. Als Erstes sollte man Wissen, dass in der Windows Powershell die MAC-Adresse als LinkLayerAddress bezeichnet wird. Weiterhin liefert die Ausgabe jeweils die IP-Adressfamilie sowie auch einen Status. Sind jetzt nur die IPv4 Adressen interessant, so benötigt man folgende Befehlssequenz.

Get-NetNeighbor -AddressFamily IPv4

Auch den Status kann man sich anzeigen lassen. So gibt es z.B. den Status Unreachable, Incomplete, State, Reachable, oder auch permanent. Um jetzt alle erreichbaren IPv4 Adressen mit dessen LinkLayerAdress auszulesen wird noch die Option State mit dem Parameter Reachable angehängt.

Get-NetNeighbor -AddressFamily IPv4 -State Reachable
Mit der Windows Powershell den ARP-Cache auslesen - Alle erkannten MAC Adressen anzeigen
Mit der Windows Powershell den ARP-Cache auslesen – Alle erkannten MAC Adressen anzeigen

Auch könnte man nach einer bestimmten MAC-Adresse suchen. Wenn man z.B. alle LinkLayerAdressen, welche mit 40 beginnen Auslesen möchte, so gibt man dies direkt nach der Option LinkLayerAdress gefolgt von der gewünschten Zahl und einer Wildcard (*) ein.

Get-NetNeighbor -AddressFamily IPv4 -LinkLayerAddress 40*

Die Windows Powershell bietet hier sehr viel mehr Optionen zum auslesen des Arp-Caches als die cmd. Besonders wenn es um das Auffinden spezieller MAC-Adressen oder um das Prüfen auf die Erreichbarkeit geht.