Да, передатчики Android рандомизируют свой MAC-адрес Bluetooth. Это ничего особенного для Eddystone, но для радиопередатчиков Android Beacon всех типов, а точнее для Android BLE-рекламы.
Чтобы доказать это, я провел несколько тестов на своем Nexus 5X. Используя приложение Locate Beacon для передачи маяка в формате iBeacon (те же результаты применяются и к Eddystone и другим форматам). Я вижу, что передаваемый MAC-адрес изменяется каждый раз, когда я останавливаюсь и начинаю рекламу.
My Nexus 5X показывает свой MAC-адрес Bluetooth в настройках -> О телефоне -> Статус -> Адрес Bluetooth. Это 64:bc:0c:xx:xx:xx
(Примечание. Я зачеркнул последние три байта MAC-устройства, отображая только первые три байта, который является OUI компании, назначенным LG Electronics, изготовителю Nexus 5X.)
Для этот тест, я запускаю сканирование bluetooth LE на устройстве Linux, настроенном на BlueZ. Сканирование выводит MAC-адрес каждого нового устройства BLE, которое он находит. BlueZ не скремблирует этот MAC-адрес.
Далее я многократно запускаю и останавливаю передатчик на Nexus 5X. Каждый раз, когда я делаю новый MAC-адрес, отображается результат сканирования. На приведенном ниже рисунке я пару раз ударяю ключ возврата, чтобы сделать пустые строки после каждого обнаружения, чтобы показать, когда я выключу передатчик и снова включился.
$ sudo hcitool lescan
LE Scan ...
5C:62:56:18:DA:A5 (unknown)
5C:62:56:18:DA:A5 (unknown)
6A:E8:D1:90:CA:26 (unknown)
6A:E8:D1:90:CA:26 (unknown)
70:A8:86:F7:E9:68 (unknown)
70:A8:86:F7:E9:68 (unknown)
66:F6:B4:24:89:44 (unknown)
66:F6:B4:24:89:44 (unknown)
Как вы можете видеть, каждый раз, когда запускается передатчик, он разослать новый рандомизированный MAC-адрес, который не имеет ничего общего с физическим адресом MAC, сообщенных настройками.
Спасибо за подробный анализ. Любая конкретная причина, почему это делается? Почему он не придерживается одного фиксированного адреса mac? Это еще более затрудняет обнаружение повторного присутствия устройств BLE, если MAC-код продолжает меняться. На самом деле, моя цель состоит в том, чтобы идентифицировать уникальное количество устройств, не зависимо от имени пространства/экземпляра в кадре eddystone. –
Я считаю, что цель - защитить конфиденциальность владельца телефона. Существует несколько компаний, которые посвящают себя обнюхиванию радиосигналов, излучаемых с телефонов людей, и использованию MAC-адресов для отслеживания их для маркетинга или других целей. Правительства делают то же самое, иногда для более сомнительных целей. Через корреляционные методы эти организации могут затем связывать MAC с личностью человека. Рандомизация Android в MAC делает его сложнее идентифицировать человека. – davidgyoung
О, я вижу! Спасибо за ответ. Но учитывая, что это не странно, что запросы на зондирование для wifi состоят из Mac ID, и если я не ошибаюсь, они также уникальны. В любом случае, я полагаю, что для внутреннего отслеживания пользователей на основе решения маяка не может зависеть от идентификатора Bluetooth Mac. Я предполагаю, что теперь единственный вариант - сделать так, чтобы телефонные кадры eddystone транслировали и отслеживали с помощью namspace и идентификатора экземпляра. Еще раз спасибо –