我想获取另一台设备的MAC地址,使用它连接到同一网络的IP地址。我有设备的IP地址。
除了使用iphlpapi.dll或使用arp -a ipaddress
在C#中运行命令提示符之外,我想要一个逻辑。
答案 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答复数据包进行答复。