MAC-Adresse anhand einer IP-Adresse ermitteln

Es ist möglich, die MAC-Adresse eines Ziels unter bestimmten Bedingungen anhand der IP-Adresse zu ermitteln. Dies ist unter Anderem im Regelfall im lokalen Netzwerk über diesen Weg möglich. Dies kann zum Beispiel einen Nutzen haben, wenn man einen lokalen Dienst anbietet, der nur bestimmten Rechnern Zugriff gewähren soll. Auch wenn die MAC-Adresse sich ähnlich wie die IP-Adresse verändern könnte, so ist diese doch deutlich statischer. Denn um die MAC-Adresse zu verändern benötigt man ausreichend Kenntnisse während sich die IP-Adresse alleine schon durch den DHCP im lokalen Netzwerk ändern könnte.

Um die MAC-Adresse anhand der IP-Adresse zu ermitteln, benötigt man nicht einmal viel Sourcecode. Zunächst einmal benötigt man einen Import einer nativem System Library. Dies kann mit folgenden Codezeilen erreicht werden:

[DllImport("iphlpapi.dll")]
public static extern int SendARP(int DestIP, int SrcIP, [Out] byte[] pMacAddr, ref int PhyAddrLen);

Anschließend benötigt man noch eine Funktionalität, die dies halbwegs sinnvoll kapselt. Dies könnte zum Beispiel wie folgt aussehen:

private string RequestMacAddress(string ip)
{
    IPAddress ipAddress = IPAddress.Parse(ip);
    byte[] mac = new byte[6];
    int length = mac.Length;
	
    SendARP((int)ipAddress.Address, 0, mac, ref length);	
    return BitConverter.ToString(mac, 0, length);
}

Damit lässt sich auf einfachem Weg die MAC-Adresse anhand der IP-Adresse ermitteln.