Я заметил, что некоторые из лучших приложений для обнаружения сети, такие как Fing для iOS и iNet для Mac, могут обнаруживать имена устройств iOS и устройств Mac, даже если они не рекламируют службы Bonjour, такие как iTunes Wi-Fi Sync. Как это делается? Я знаю, как выполнить обратный запрос mDNS https://serverfault.com/questions/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 или какая-либо другая служба Bonjour на компьютере. iOS-устройство. Я не уверен, как получить имя иначе, но эти приложения надежно его получают. Я использовал Wireshark во время обнаружения iNet и вижу только запросы ICMP и NetBios, которые возвращают 0 ответов.
Также обратите внимание, что я уже получил IP-адрес устройства, выполнив широковещательный пинг и затем проанализировав таблицу ARP. Я хочу узнать, какие из обнаруженных таким образом устройств являются устройствами iOS, получив имя их устройства и найдя строку «iPhone» или «iPad».
Также обратите внимание, что на веб-сайте приложения iNet приведено следующее о том, как они выполняют обратный поиск IP-адресов. Я понимаю, что это означает, что они выполняют обратный поиск DNS и обратный поиск mDNS для каждого IP-адреса.
Reverse IP lookups (hostnames) are performed as unicast and multicast queries for every IP found.
– http://www.bananaglue.de/inet/index_e.php
dns-sd -B _smb._tcp
иdns-sd -B _afpovertcp._tcp
. Примечание. Не используйте инструмент dns-sd непосредственно в сценарии bash. - person Yser   schedule 16.12.2014