Использовать порт 62078
Самый надежный индикатор, который я видел, - можно ли подключиться к IP-порту 62078.
Порт 62078 используется для службы синхронизации iphone, и я не думаю, что MacBook использует его. Этот порт всегда открыт для iPhone и iPad в нашей (очень маленькой) сети.
Возможно (но не вероятно) есть сообщения, которые вы можете отправить в порт, чтобы узнать подробности ...
Я думаю, что официальный список назначений портов в xml здесь, хотя он не работал для меня сейчас:
http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml
MAC-адрес
Теоретически МАС-адреса могут помочь - но, вероятно, не будут использоваться, если вы не найдете где-нибудь надежный список диапазонов (например, фирма по обеспечению безопасности сети или поставщик оборудования). MAC-адреса зависят от фактического использования микросхем (или прошитого MAC-адреса). База данных находится на уровне организации (хотя организации иногда предпочитают использовать определенные диапазоны для конкретных устройств).
http://standards.ieee.org/develop/regauth/oui/public.html позволяет вам загрузить базу данных «Организационно уникальных идентификаторов», или вы можете найти «Apple», или первые три байта MAC-адреса, например, 00264A.
Как ни странно, поиск MAC не работает ... Первые три цифры моего iPad MAC - 28-68-BA, и это ничего не дает.
Пользовательский агент
Вероятно, бесполезно, но если вы можете наблюдать за сетевым трафиком или иметь http-прокси, то строка user-agent может помочь (см. http://developer.apple.com/library/IOS/documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3).
Редактировать (добавлено):
Протокол Apple Bonjour опирается на многоадресный DNS (mDNS), работающий на UDP-порту 5353, и отправляет на эти зарезервированные групповые адреса: групповой адрес IPv4 - 224.0.0.251, групповой адрес IPv6 - FF02 :: FB - ссылка .
Это поможет получить push-уведомление, когда устройства Apple подключаются к локальной сети (link-local), прослушивая многоадресные сообщения по 5353 UDP. Возможно, понюхать пакет и посмотреть, есть ли в нем какая-либо дополнительная информация:)
Хотя я предполагаю, что Bonjour API также позволяет видеть это ...