Подтвердить что ты не робот

Как получить удаленный MAC-адрес через IPv6 в iOS программно

Мне нужно найти решение, как получить MAC-адрес с другого устройства в сети Wi-Fi. Есть хороший способ, как это сделать для IPv4 (Как приложение iOS для приложения Fing получает MAC-адрес?), но как это сделать для IPv6? Поскольку ARP был заменен NDP (Neighbor Discovery Protocol), последний метод не работает. Я был бы очень признателен, если бы кто-нибудь мог мне помочь.

4b9b3361

Ответ 1

Слой и инкапсуляция

Сетевая архитектура является многоуровневой, верхний уровень инкапсулирует различные реализации нижнего уровня и обеспечивает более высокую абстракцию относительно нижнего уровня. Сетевой уровень, который использует IP, инкапсулирует различные протоколы уровня канала, такие как Ethernet, WiFi, PPP (который может работать по последовательному кабелю, который не использует MAC-адрес) и т.д.

  • Итак, первая проблема заключается в том, что вы подразумеваете под remote?

Если вы имеете в виду другие хосты в WAN, это невозможно, если оба устройства не реализуют конкретный протокол: вы отправляете запрос на это устройство, они отвечают своим MAC-адресом.

Если вы имеете в виду другой хост в той же локальной сети, вы можете использовать протокол ARP в IPv4 и NDP (который) в IPv6.

Arp и NDP

ARP отправляет широковещательную рассылку в локальной сети, когда она знает IP-адрес хоста, но не MAC-адрес, а затем узлы, которые находят кого-то, требуют от него ответа на свой MAC-адрес.

NDP предоставляет две основные части функциональности, первая - с ARP: сопоставление между адресами сетевого и канального уровня. (Разница заключается в NDP с использованием адреса многоадресной рассылки: префикс f02:: 1: f/104, в сочетании с 24 битами младшего порядка запрашиваемого адреса IPv6)

Итак, вам нужно отправить сообщение ICMPv6 Neighbor Solicitation.

Назначение адресов в IPv6

Локальные IPv6-адреса (и некоторые глобальные адреса IPv6) используют идентификаторы интерфейса (IID) в качестве основы для назначения одноадресного IPv6-адреса.... IID обычно составляют 64 бита и формируются либо непосредственно из MAC-адреса базового уровня сетевого интерфейса с использованием модифицированного формата EUI-64. или другим процесс, который рандомизирует ценность в надежде обеспечить некоторую степень конфиденциальности при отслеживании адресов.

Таким образом, в наиболее распространенных случаях вы можете получить MAC-адрес устройства непосредственно со своего локального адреса ссылки IPv6.

Вывод:

  • реализовать ваш протокол в обоих устройствах
  • отправить сообщение NDP в запрошенный node, если он находится в той же локальной сети
  • извлечь MAC-адрес из локального IPv6-адреса

Ссылка

  • Wikipedia
  • TCP/IP Illustrated, том 1

Ответ 2

Я использую MMLanScan для этой цели. Очень просто работать, чтобы найти IP/MAC-адреса устройств в вашей локальной сети.

Я использую его некоторое время назад, но я думаю, что он работает и с IPv6.