Как получить MAC-адрес другого устройства, используя его IP-адрес
Я хочу получить MAC-адрес другого устройства, используя его IP-адрес, подключенный к той же сети. У меня есть IP-адрес устройства.
Мне нужна логика, отличная от использования iphlpapi.dll или запуска командной строки в C# с помощью arp -a ipaddress
,
1 ответ
Чтобы получить MAC-адрес от другого компьютера из той же сети, вам необходимо отправить пакет запроса ARP с определенным IP-адресом, например: Вы хотите узнать MAC-адрес по IP (192.168.1.20), поэтому вам нужно создать необработанный пакет, например:
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)
Если цель получит этот пакет, цель ответит ARP-пакетом ответа с включенным MAC-адресом.
Вы должны использовать протокол разрешения адресов (ARP) в той или иной форме, поскольку он предназначен для получения физического адреса устройства из его ip, но вы уже исключили его использование из командной строки. Возможно, вы сможете получить результаты предыдущего arp из таблиц системной маршрутизации.
В качестве альтернативы вы используете оболочку pcap и отправляете свой собственный запрос arp на устройство, после чего он будет отвечать его MAC-адресом.