Я хотел бы написать код на C / C ++, который может сканировать локальную сеть на наличие устройств и извлекать их имена хостов, в том числе для машин, которые НЕ используют mDNS, NetBIOS или аналогичные протоколы. Похоже, что Avast Wifi Inspector может регистрировать имена, зарегистрированные через DHCP (по крайней мере, на одной машине в моей сети нет запущенных служб, а Wifi Inspector получает свое имя хоста DHCP).
Пока что я не нашел четкого ответа в Интернете, и использование Wireshark, чтобы посмотреть, что делает Wifi Inspector, только исключило конкретные методы. Wireshark показывает несколько пакетов ARP и ICMP, а также, возможно, и другие (не уверен, какие из них задействованы). Многоадресный DNS определенно НЕ используется для идентификации всех машин, а такие инструменты, как nslookup, не могут получить имена хостов для локальных машин, поэтому простой поиск DNS также не происходит (nslookup использует DNS-сервер ISP, который ничего не знает о моя сеть).
Итак, как такие инструменты получают имена хостов всех машин в сети?