ESP32 iPhone Bluetooth, просто общий вопрос - PullRequest
1 голос
/ 28 января 2020

Я пишу некоторый код (C ++) для ESP32, чтобы он работал как маяк BLE. Проблема заключается в следующем: iPhone не отправляет свой реальный адрес MA C, но для обеспечения безопасности генерирует случайно сгенерированный адрес MA C. Что меня смущает, так это как вы узнаете, является ли это устройство, с которым вы ранее подключались?

Итак, скажем, я обнаружил новый адрес BLE MA C и, глядя на данные производителя, я могу определить, что это устройство Apple (первые 2 байта равны «4 C»).

Теперь мне нужно узнать, ранее ли я подключался к этому устройству, чтобы я мог разрешить ESP32 инициировать действие (для простоты, скажем, включите светодиод). Если этот адрес MA C находится в списке известных устройств, тогда я могу продолжить, а если нет, то игнорирую его.

Проблема в том, что iPhone не отказывается от реального MA C адрес, обнаруженный адрес MA C никогда не будет ничего совпадать. Поскольку это ситуация безопасности, я уверен, что алгоритм для генерации этих адресов MA C неизвестен.

Для ясности: этот код пишется для ESP32, не iPhone.

1 Ответ

2 голосов
/ 29 января 2020

На самом деле невозможно определить, было ли устройство замечено ранее, если только вы не создадите пару и не установите sh связь с ним. После сопряжения с устройством долгосрочные ключи заменяются и используются для быстрого восстановления sh соединения.

Это сделано специально. Адреса MA C изначально были уникальными, но это позволяло отслеживать людей и устройства без их согласия. Подробнее об этом можно прочитать в следующих руководствах ESP-IDF:

...