Как iOS и OS X определяют, когда сеть Wi-Fi является личной точкой доступа?

Когда доступна сеть Personal Hotspot, вместо обычного значка блокировки в списке доступных сетей на iOS и OS X отображается значок цепочки.

Раскрывающийся список выбора сети Wi-Fi в OS X

Мой вопрос в том, как OS X различает эти сети? Указано ли в 802.11, как точки доступа по-разному передают свои SSID?

Я поставил тебе + только за то, что ты рассмешил меня взрывным рисом :)
Звучит как возможность взломать Wireshark/беспорядочный сниффер.
Я удалил свой ответ, потому что , по-видимому, личная точка доступа iPhone не является специальной сетью . Я считаю, что есть другие данные, идентифицирующие сеть как личную точку доступа, но у меня пока нет подробностей для ответа. (Я совершенно уверен, что это не основано на MAC-адресе, как предложил @emotality)
Бьюсь об заклад , существует специальное расширение Apple IEEE802.11 Beacon Frame, которое объявляет о привязке, как это делают другие (например, Cisco CCX). К сожалению, у меня нет устройства для тестирования.

Ответы (4)

Я думаю, что этот вопрос должен быть размещен на сайте обмена стеками обратного проектирования . Вы запрашиваете детали реализации черного ящика...

На самом деле я немного покопался /System/Library/CoreServices/Menu Extras/AirPort.menuи/System/Library/Frameworks/CoreWLAN.framework/

Существует частный метод CWNetworkcall isPersonalHotspot, вроде:

char -[CWNetwork(Private) isPersonalHotspot](void * self, void * _cmd) {
    eax = [*(self + 0x4) objectForKey:@"IOS_IE"];
    eax = LOBYTE(eax != 0x0 ? 0x1 : 0x0) & 0xff;
    return eax;
}

Кажется, просто проверяет некоторые идентификаторы. Я думаю SFRemoteHotspotDeviceи WiFiXPCEventProtocolможет иметь более низкоуровневые детали, но я не проверял.

Кстати, есть также свойство определять, работает ли сеть CarPlay.

@interface CWNetwork : NSObject <NSCopying, NSSecureCoding>
... //redacted
@property(readonly) BOOL isPersonalHotspot;
@property(readonly) BOOL isCarPlayNetwork;
... //redacted

Apple контролирует оборудование, драйверы и операционную систему, я думаю, они могут легко добавлять дополнительные метаданные при передаче сигнала WiFi, чтобы ваш Mac знал, добавлять ли значок цепочки или нет.

Если кто-нибудь выяснит, как именно Apple справилась с этой задачей, дайте мне знать. :)

Apple разговаривает с Apple, они знают свои собственные продукты и знают, является ли это устройством Apple или нет. У Apple может быть свой диапазон MAC-адресов, или они просто видят всю информацию об этом устройстве, например:

Если вы перейдете к «Об этом Mac», «Системный отчет», «Сеть», «Wi-Fi». Вы увидите следующую информацию об этой сети/устройстве.

Детали Wi-Fi

Проверьте интерфейсы: тип карты, MAC-адрес или регион. Возможно, это все «идентификаторы Apple». Создавая точку доступа с вашим iPhone, Apple решила поделиться информацией с вашим Mac, чтобы показать, что это устройство Apple.

Должен сказать, поначалу я действительно сомневался, что это может быть возможно, так как никакая из этой информации, кроме MAC, не используется в 802.11, но после прочтения я начинаю думать, что ваша теория может иметь какое-то значение. 3 октета MAC-адреса указывают производителя устройства, и Apple использует отдельную часть MAC-адреса производителя на всех своих iDevices.
Теперь, если бы я мог каким-то образом подделать BSSID точки доступа, чтобы она отображалась как iDevice, я мог бы подтвердить или опровергнуть эту теорию... Кто-нибудь знает, как это можно сделать? (Или это вообще возможно?)
Лол, нет, я не думаю, что это хорошая идея задавать вопросы о взломе здесь: P, но вы можете пометить ответ как правильный, если он ответил на ваш вопрос. :D
Я думаю, что это не так. Даже точки доступа, созданные с помощью устройств Android, имеют значок «цепочка».
Где ты это видел, Сурадж Тапар?

Значок цепочки показывает, что интернет-соединение подключается через другое устройство. Это не специально для личных точек доступа.

Помимо того факта, что соединения Wi-Fi почти всегда подключаются к другому сетевому устройству, это на самом деле не объясняет, почему точки доступа, созданные на устройствах Android, не отображаются со значком цепочки.
В macOS Sierra точки доступа, созданные с помощью устройств Android, отмечены значком цепочки.

Кроме того, точки доступа на iOS также идентифицируются как 172.20.10.x.

Вы не будете получать DHCP-трафик, если не подключитесь к точке доступа.