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