Как стать автором
Обновить

Как магазин в торговом центре узнаёт вас по Wi-Fi (точнее, по MAC-адресу) — на базе обычных хотспотов

Время на прочтение4 мин
Количество просмотров68K
Всего голосов 61: ↑57 и ↓4+53
Комментарии91

Комментарии 91

«P.S. Параноики, добро пожаловать в дивный новый мир! Отключайте Wi-Fi, выходя из дома.» Но ведь в iPhone есть защита от такого способа остлеживания… при коннекте каждый раз генерируются новые айдишники.
Рандомизация MAC адреса не мешает Cisco CMX собирать и отображать статистические данные, представляющие собой процентные соотношения и тенденции пользователей к посещению определенных зон за определенный отрезок времени (день за днем, месяц за месяцем, год за годом).
а в ближайшем будущем, вероятно, даже пользователя с рандомным МАК-адресом можно будет определить по паттерну поведения))
А вообще очень круто сделано, как ваша компания пришла к этому? Скопировали западный опыт, сами придумали или поступил запрос от заказчика? И как давно началась реализация?
Скорее объединили западный опыт с текущими тенденциями на нашем рынке. На западе эти решения давно распространены, причем ими активно пользуется не только ритейл, но ещё и гостиничный бизнес, транспортная отрасль и другие сегменты рынка.
Переход большинства сервисов в «облака» и послужил толчком к тому, чтобы предлагать аналитику как услугу из собственного облака. Реализуем подобные проекты с прошлого года.
Здесь нет ничего, кроме штатного и давно известного функционала Cisco MSE (Cisco CMX). Кстати, генерируемые этими системами отчёты — «вещь в себе», они жестко зашиты и их почти невозможно кастомизировать. Да, у CMX есть некоторое API, но лучше бы его вообще не было — через него ничего толком достать не удаётся, и слепить собственную аналитику просто не получится.
Наверняка есть открытые решения, например на основе RouterOS
Нет. C RouterOS та же проблема — сниффить probe-запросы на устройстве не получается, в прошивку вендор изменения вряд ли включит. У Cisco проприетарный протокол общения с контроллером (NMSP), тоже шифрованный, так что добро пожаловать купить CMX. Есть обходное решение, но я его не скажу :)
Некоторые другие вендоры, например Ruckus, Huawei и Cambium имеют средства отправки probe-пакетов во внешнюю систему, но на это ни стандарта ни общего протокола не существует. В результате на рынке присутствует несколько систем аналитики, все закрытые и разного качества.
Есть реализации закрытых систем, использующих сбор probe-пакетов на роутерах с OpenWrt (там это делается тривиально), к тому же это на порядок дешевле по железу.
Опенсорса нет и вряд ли он скоро появится.
RouterOS и «открытые решения» ??
Получается, что самые интересные данные (возвраты, «узнавание клиента», эффективность BTL-мероприятий), собрать не получится? Остаются только пользователи телефонов со старыми версиями Android, которые не выключили wi-fi.
А из вашего ответа на вопрос: «Как много людей ходит с постоянно включенным WiFi?»,
это «Около 40%. Причем больше всего оставляют включенным wi-fi пользователи iPhone».
Итого, выборка очень маленькая.
При подключении к WiFi сети используется реальный MAC-адрес. Поэтому если речь идет о торговом центре, где есть публичные WiFi сети, то такая система тоже будет видеть настоящие адреса iPhone. А сгенерированные можно фильтровать.
>>Телефоны ищут свои «родные» сети, поэтому время от времени отправляют в окружающее пространство пакеты с их запросами.
В случае, если у меня дома скрытая сеть (точка доступа не рассылаает beacon-ы), да, телефон будет пытаться подключиться к ней сам отправляя запросы. Но в случае же обычной wifi-сети, телефон разве что-то отправляет ДО подключения?
Ваш телефон находясь в магазине ищет вашу скрытую сеть пытаясь к ней подключиться, но, как тут уже много раз упомянули, использует при поиске знакомых сетей случайные адреса.

Да, примерно так собирают данные о вай-фай сетях крупные геосервисы для ускорения запуска, пока gps/глонасс греется или когда вовсе не доступен.

При включенном wi-fi телефоны периодически отправляют фреймы probe requests по всем каналам. 
А, позвольте спросить, для чего?
Активное сканирование окружающих сетей. К примеру, информация о поддерживаемом устройством наборе скоростей. Запрос на информацию от точки доступа.
для чего?
Google и Apple хотят знать ваше физическое местонахождение. Если у вас выключен GPS, но вы видите wifi-точку такую же, которую видит рядом находящийся смарт со включенным GPS, это раскрывает ваши координаты намного точнее, чем по вышкам сотовой сети.
Но ведь и Айфоны и последние Андроиды рандомизируют МАС, с которого рассылают опросы.
(Если подключатся к сети — то уже другой разговор, но это еще надо заставить всех подключиться...)
Ага, было в новостях пару лет назад, когда только Эпл анонсировал эту фичу, сразу прогорели несколько стартапов отслеживающих посетителей по мак-адресам.
Cisco CMX использует технологии, для которых рандомизация MAC-адресов не является препятствием для определение «горячих» мест скопления людей в магазинах. Ведь оценка активности пользователей идет путем сравнения процентного соотношения пользователей в различных зонах за определенный отрезок времени.
Что касается отчетов по повторным визитам и количествам устройств в определенной зоне – рандомизация MAC-адресов действительно несколько искажает аналитические данные.
Джинса на Хабре.

Был похожий проект и после 9 iOS его закрыли, ибо случайную генерацию мака обойти не смогли. А было очень удобно отслеживать человека, который нёс выкладывать печеньки на кухню

Cisco CMX имеет базу данных известных OUI (Уникальный идентификатор организации), который является частью MAC-адреса. Соответственно, если OUI рандомного MAC-адреса неизвестен, то этот MAC-адрес игнорируется. База данных OUI обновляется с каждым патчем Cisco CMX.
Эксперименты показали, что рандомные адреса генерятся не только для неиспользуемых блоков ОUI, но и для вполне себе валидных блоков чужих (или собственных) вендоров. У того же эппла в базе больше 500 блоков OUI.
Что то вы странны вещи говорите, там черным по белому сказано, что используется Locally administered MAC address. Там в адресе есть бит, который указывает глобальный уникальный это адрес или локальный случайный.
История с GSM сильно завязана на операторов связи
Каким образом? Сниффинг у себя в магазине нелегален и требуется согласие каждого оператора?
Смотря что снифать собираетесь… Все чем телефон может светить в «родную сеть» (поправьте меня если я тут ошибаюсь) — это IMSI. В настоящий момент все телефоны используют одноразовые IMSI (TIMSI) — поэтому отследить довольно сложно.
Ну а если эмулировать БС оператора — то думаю и «присесть» можно
Wi-Fi устройства передают в эфир свой МАС адрес нешифрованным, и принять его можно обычной мыльницей за 1500р с openwrt (нет, Cisco AIR-CAP3800 брать не обязательно).
GSM сигнал просто так не принять, а если и получится — там всё шифровано, даже IMEI не достать.
Сниффинг через подмену базовой станции нелегален. И за него быстро и неотвратимо прилетает
Как много людей ходит с постоянно включенным WiFi? Наверное очень мало.
Около 40%. Причем больше всего оставляют включенным wi-fi пользователи iPhone.
хм, я думал таких будет больше, при чём андроид — без дополнительных настроек, если мне не изменяет память, по умолчанию сканирует в фоновом режиме(при включенном wifi). Так же, в прошивке может быть доступно сканирование сети вообще всегда для сервисов определения местоположения
а как посчитали кол-во людей, кто ходит с невключенным wifi?
А зачем его выключать?
Задаюсь таким же вопросом — не помню, чтобы на моих девайсах WiFi был отключен когда-либо кроме эпизодического авиарежима)
НЛО прилетело и опубликовало эту надпись здесь
И сколько он там той батареи нажрёт? Интернет быстрее её расходует.
Так не жрёт — на iOS с самого начала, а на Android точно с 7-й версии.
Скорее можно посадить батарейку забыв его включить, так как мобильная сеть жрёт огого.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
я почему-то думал, что вайфай-клиент шлет пакеты только, чтобы найти скрытые сети, которые на нем настроены. А для открытых — просто слушает, что доступно и подключается, если есть известные.
Для открытых клиент шлет probe request.
Это хорошо. Но как система, установленная в торговом центре узнает, что MAC-адрес 00:a1:fc:eb:ae:e4, который ходит в магазин каждый день — это я?
Ну это то просто — нужно взять карточки лояльности которые использовались для оплаты в промежуток когда был замечен Ваш mac.
2 максимум 3 посещения и Вы точно идентифицированы.
Но как говорят выше ваш mac уже скорее всего Вас не выдает
также у магазинов есть фамилия и имя кардхолдера при оплате с банковской карты. Те же 2-3 оплаты на кассе с включенным вай-фай и вы на крючке)
по карте скидки — им без разницы кто ты главное что ты купил, когда и как часто
или
по составу покупок…
Системе не надо узнавать, что MAC 00:a1:fc:eb:ae:e4 – это Вы. Системе достаточно знать, что этот MAC ходит каждый день и наполняет статистику повторных посещений в магазине.
Каждый день у человека будет новый рандомный МАС в probe-запросах и один и тот же настоящий — если он попробует подключиться к местному Wi-Fi. Но-его надо убедить подключиться.

А вот если я в настройках вайфай снял галочку "Всегда искать сети" они меня не поймают да?

Не знаю кто как — я эту галку снимаю первым же делом — чтобы не кушало аккумулятор телефона.

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

P.S. Параноики, добро пожаловать в дивный новый мир! Отключайте Wi-Fi, выходя из дома.
Я не параноик, просто с кирпичом хожу, у которого нет Wi Fi :)
Наверное, я порчу статистику — ведь из-за меня они недополучают прибыль данные.
Джинса на Хабре! iOS до подключения к точке меняет MAC смартфона на рандомный, Andoid тоже подтягивается. Все это уже пройдено несколько лет назад. Дешевая попытка что-то продать.
Не понимаю почему коментарий в минусе, ведь так и есть, iPhone по дефолту рандомайзит mac адресс. Samsung насколько мне известно тоже имеет данную опцию
Потому что «Блог компании КРОК» хочет продавать циски (:

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

А посмотрите комментарии сотрудницы КРОКА, которая писала этот пост:

https://habrahabr.ru/company/croc/blog/331894/#comment_10289792

Системе не надо узнавать, что MAC 00:a1:fc:eb:ae:e4 – это Вы. Системе достаточно знать, что этот MAC ходит каждый день и наполняет статистику повторных посещений в магазине.

Речь-то про возвраты.
Подмена все таки мешает — телефон прОбит часто, если адреса каждый раз будут новые, то система посчитает что это толпа людей пришла. Поэтому так можно лишь определять популярные места, где более высокая концентрация людей в единицу времени. Но тоже с оговорками, потому что разные устройства с разной частотой могут прОбить.
Когда я задал вопрос продавцам CISCO про то, что MAC адрес рандомный и эта система будет плохо работать — меня пытались убедить, что производители телефонов якобы отключили рандомизацию MAC адреса.
iOS до подключения к точке меняет MAC смартфона на рандомный
MAC определяется ещё до подключения и даже без подключения ;) но в целом да. Есть только нюанс, 2-3 года назад когда появлась эта фича она имела проблемы и можно было отслеживать эти девайсы, как сейчас с этим дела незнаю.
Спасибо, очень ценный комментарий (:
«Где-то что-то было 2-3 года назад, как сейчас не знаю»
Ещё раз: никакого спецоборудования, обычные точки Wi-Fi Cisco и софт для обработки их логов.

Всего лишь Cisco за N тыс. $

Ну если они уже есть, почему бы и не получить дополнительные плюшки за почти ноль денег.

Потому что надо покупать совсем не дешевые Cisco Prime и Cisco CMX, а также платить интегратору за их настройку.
От модели точки доступа Cisco зависит точность.
Нет, точность зависит от модели телефона (он же излучает сигнал) и где он находится, если покупатель положит телефон в карман/сумку то уровень сигнала падает на несколько десятков дб, а это эквивалентно если он отойдет от точки на 20-30м прямой видимости, так же если человек повернется боком будет не слабый перекос который не ловится тремя точками.
Даже если положить телефон на одном месте и прямой видимости, из-за шумов уровень сигнала будет плавать до +-10 дб. А если учесть что, в магазине куча препятствий и ходит много народу, точность будет никакая.
Поэтому я не верю в точность 5–10 метров для продакшена, скорее это для пустого зала без покупателей.
уровень сигнала падает на несколько десятков дб

Он падает на всех точках доступа, не на одной.
если человек повернется боком будет не слабый перекос

В работе Advanced Integration of WiFi and Inertial Navigation Systems for Indoor Mobile Positioning рассматривают в т.ч. и траектории с поворотами, и всё нормально работает.
из-за шумов уровень сигнала будет плавать до +-10 дб

Усреднять по временному окну.
Он падает на всех точках доступа, не на одной.
Он падает по разному, например у вас есть сигнал от 3-х точек: A -10, B -10, C -10 (человек стоит на одинковом расстоянии между ними), далее он ложит телефон в карман и по прежнему стоит там же, через минуту вы получаете сигнал: A -15, B -20, C -40 (и не понятно, то ли в карамн сунул, то ли вышел за треугольник этих точек хотя он стоит там же), какую математику вы тут будете применять?
Усреднять по временному окну.
Сигналы присылаются в среднем раз в 30-60 сек (5-600 сек), что-бы устреднить вам нужно что-б покупатель стоял несколько минут в одном месте, за это время покупатель пройдет пол магазина или вообще уйдет из него, сигналов не достаточно что-бы усреднять.

Кстати ещё попадаются дубли мак-адресов (напрмер в одно и то же время в разных городах). Если у вас точки во многих магазинах, то можно отслеживать как вы перемещались по городу, или когда ушли из одного магазина в магазин конкурента.
Он падает по разному

Насколько по разному? Ваш пример гипотетический, или вы видели его в какой-то статье? Может быть, в реальности в основном встречаются числа вроде -11, -12, -13?

Усреднять по временному окну.

Имелось в виду по окну, равному длительности передачи кадра probe request. Но ваш метод тоже неплох. Из какого стандарта и из какого пункта взято 5-600 секунд?
Ваш пример гипотетический, или вы видели его в какой-то статье? Из какого стандарта и из какого пункта взято 5-600 секунд?
Из практики, анализ миллиона* реальных устройств, я разрабатывал подобную систему (что в статье) несколько лет назад.
У антенны есть своя диаграмма направленности, которая дополнительно будет искажаться окружающими препятствиями (тело человека, ...).
Поэтому нельзя считать что сигнал распространяется одинаковым образом во все стороны.
Т.е. чтобы улучшить или ухудшить сигнал Wi-Fi, мне нужно стоя на одном месте повернуть телефон на N градусов в некой оси?
Да, в простом опыте я добился 34 dBm разницы в уровне сигнала просто вращая телефон вокруг вертикальной оси в трех метрах от точки доступа.
Можно ещё iPhone в правую руку взять, подумают что вышел из магазина.
Министерство торговли США обязывает все системы подобного рода (сертифицированные в США) иметь страничку для исключения любого желающего MAC адреса из статистики.
Такая же политика есть во многих других странах Европы и в Австралии.
У вас такая страничка есть или вы работаете только в России?
Да, такая страничка есть. Через перехватывающий веб-портал Cisco CMX пользователям дается возможность сделать opt-out из сервиса обнаружения и статистики (система перестает обрабатывать и хранить данные по MAC-адресу).
поделитесь пожалуйста (специально для параноиков) а еще лучше в конец статьи добавьте :)
нашел сам, специально для параноиков — для исключения вас из статистики, надо добавить свой MAC вот сюда: https://account.meraki.com/optout
Помню как майкрософт на одной из конференций по бигдате пару лет назад рассказывали об опыте использования своей BI на примере одного из английских магазинов. Активность пользователей относительно раскладки товаров отслеживалась и анализировалась с помощью датчиков kinect, а отзывы при помощи твиттера на уровне negative (при этом выявлялась причина будь то брак, обслуживание, ассортимент)/positive.

Так что будущее уже давно рядом, вопрос деньговложений :)
А косательно bluetooth устройст есть подобные решения? гарнитура, умные часы, фитнес браслет, беспроводная мышка которая валяется в сумке с ноутбуком, телефон с всегда включенным bluetooth для взаимодействия с этими устройствами и никакой рандомизации уникальных идентификаторов. или все же bluetooth вне режима видимости себя не выдает?
Есть наверное такие штуки — в Минске внедряют систему управления светофорами, датчиками служат bluetooth в автомобилях, телефонах водителей, приемники — перед светофорами над дорогой, софт как-то отсеивает bluetooth пешеходов.
Хотя я и фан Cisco, должен признаться. Уже больше года собираю статистику, описанным выше способом, на " подшефных " магазинах.
Но не на дорогом оборудовании. На обычных TP-Link репиторах за 15 евро. Принцип простой репиторы воткнуты в розетки, связаны с домашним wifi. " слушают" эфир и в real time отсылают данные на сервер.

В Германии можно арендовать х- штук репиторов и cloud сервис. Совсем не дорого. Совсем не надо постоянно.

Статистика нужна несколько раз в год. Только не скарашивайте о деталях. Google в помощь
Да, можно делать и так. Но для крупной коммерции нужны коробочные решения, и описанное отлично подходит. Плюс куча дополнительного функционала, который вам пришлось разрабатывать, скорее всего.
Крайне любопытно: как на обычных, не специальных, точках доступа собирать хотя бы информацию о проходящих в поле из действия mac-адресах?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий