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

Открыть имя устройства iOS с помощью mDNS

Я замечаю, что некоторые из лучших приложений для сетевого обнаружения, таких как Fing для iOS и iNet для Mac, могут обнаружить имя устройства устройств iOS и устройств Mac, даже если они не рекламируют сервисы Bonjour, такие как iTunes Wi-Fi Sync. Как это делается? Я знаю, как выполнить обратный запрос mDNS https://serverfault.com/info/143184/how-do-i-get-the-machine-name-from-an-ip-via-multicast-dns. Но в то время как обратный поиск mDNS (по крайней мере, выполненный командой dig dig -x the.ip @224.0.0.251 -p 5353) будет работать против Mac, который иначе не передает никаких услуг Bonjour, он не работает, если не работает Wi-Fi Sync или какой-либо другой сервис Bonjour на устройстве iOS. Я не уверен, как получить имя в противном случае, но эти приложения надежно получить его. Я использовал Wireshark, пока iNet открывал, и я вижу только запросы ICMP и NetBios, которые возвращают 0 ответов.

Также обратите внимание, что у меня есть IP-адрес устройства, выполнив широковещательный пинг, а затем разобрав таблицу ARP. Я хочу узнать, какие из устройств, обнаруженных таким образом, являются устройствами iOS, получив имя своего устройства и ищет строку "iPhone" или "iPad".

Также обратите внимание, что веб-сайт приложения iNet предоставляет следующие сведения о том, как они обращают IP-запросы. Я полагаю, это означает, что они выполняют обратный поиск DNS и обратный поиск mDNS для каждого IP-адреса.

Reverse IP lookups (host­names) are per­formed as unicast and mul­ti­cast queries for every IP found. - http://www.bananaglue.de/inet/index_e.php

4b9b3361

Ответ 1

Вы пробовали инструмент командной строки dns-sd?

Если вы введете dns-sd -B _services._dns-sd._udp, чтобы получить все доступные службы, вы увидите там доступную службу _whats-my-name.

$ dns-sd -B _services._dns-sd._udp
Browsing for _services._dns-sd._udp
DATE: ---Tue 16 Dec 2014---
14:38:30.746  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
14:38:30.747  Add        3   5 .                    _tcp.local.          _nfs
14:38:30.747  Add        3   5 .                    _tcp.local.          _afpovertcp
14:38:30.747  Add        3   5 .                    _tcp.local.          _smb
14:38:30.747  Add        2   0 .                    _tcp.local.          _whats-my-name
14:38:31.330  Add        3  10 .                    _tcp.local.          _nfs
14:38:31.330  Add        3  10 .                    _tcp.local.          _afpovertcp
14:38:31.330  Add        2  10 .                    _tcp.local.          _smb

после этого мы можем запросить эту услугу, которая выводит следующее:

$ dns-sd -B _whats-my-name._tcp
Browsing for _whats-my-name._tcp
DATE: ---Tue 16 Dec 2014---
14:40:20.738  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
14:40:20.742  Add        2   0 local.               _whats-my-name._tcp. Blub MacBook Pro

Instance Name - интересная часть. Я предполагаю, что услуга _whats-my-name доступна на каждом компьютере, работающем bonjour. Возможно, вы можете отслеживать отправленные запросы и восстанавливать их с помощью основных инструментов bash, если вы не можете получить доступ к dns-sd в каждом случае. Более того, вы не должны использовать dns-sd в своем script. Вместо этого вы должны использовать определенную реализацию протокола для своего языка программирования.

Примечание. Помните, что имя устройства может быть ненадежным, чтобы определить, какое устройство вы общаетесь с

Надеюсь, что это поможет.