如何使用其IP地址获取其他设备的MAC地址

时间:2014-12-12 08:42:55

标签: c#

我想获取另一台设备的MAC地址,使用它连接到同一网络的IP地址。我有设备的IP地址。

除了使用iphlpapi.dll或使用arp -a ipaddress在C#中运行命令提示符之外,我想要一个逻辑。

2 个答案:

答案 0 :(得分:0)

必须以某种形式使用地址解析协议(ARP),因为它旨在通过其ip获取设备的物理地址,但您已经排除了从命令行使用它。您可以从系统路由表中获取先前arp的结果。

或者您使用pcap包装器并将您自己的arp请求发送到设备,然后它将使用它的MAC地址进行响应

答案 1 :(得分:0)

要从同一网络的另一台计算机上获取MAC地址,您需要发送具有特定IP地址的ARP请求数据包,例如:您想从IP(192.168.1.20)知道MAC地址,因此需要创建这样的原始数据包:

Ethernet: Destination: FF:FF:FF:FF:FF:FF (broadcast address) Source: Your current MAC Address EthType: 0x0806 (ARP Type)

ARP (Ethernet Payload) Hardware Type: 1 (Ethernet) Protocol Type: 0x0800 (IP) Hardware Size: 6 Protocol Size: 4 Opcode: 1 (ARP Request) Sender MAC Address: Your current MAC Address (Same as at Ethernet part) Sender Protocol Address: Your current IP Address Target MAC Address: 00:00:00:00:00:00 (because you don't know target MAC Address yet) Target Protocol Address: 192.168.1.20 (The IP that you want to know about the Mac address)

如果目标接收到此数据包,则目标将使用包含MAC地址的ARP答复数据包进行答复。