2017-01-17 5 views
0

Насколько я знаю, некоторые телефоны Android сегодня могут выступать в качестве маяка BLE (эта функция обычно отключается на большинстве устройств). Когда устройство Android работает как маяк и может быть обнаружено, является ли его MAC-адрес рандомизированным? Можем ли мы каким-либо образом не показывать фактический MAC-идентификатор, когда устройство доступно для обнаружения?Рандомизировать адрес Mac Bluetooth LE Broadcast

ответ

1

Большинство новейших устройств Android с 5.0+ имеют поддержку периферийного режима Bluetooth LE, что означает, что они могут передавать в качестве маяков. Эта функция присутствует в Android 5.0+, но некоторые производители решили отключить поддержку некоторых моделей, особенно старых моделей. Вы можете увидеть список устройств, которые, как известно, поддерживают и не поддерживают эту функцию: http://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html

При включенной функции MAC-адрес во время передачи не выполняется рандомизация, а передача включает в себя фактический MAC-адрес Bluetooth, позволяющий получая устройства для чтения этого MAC-адреса.

EDIT: Последующее тестирование доказало мне, что приведенное выше утверждение неверно. MAC-адрес рандомизируется каждый раз при перезапуске передатчика. Вы можете увидеть proof of this here.

В Android не существует механизма для изменения этого параметра.

При сканировании на Android возвращается фактический MAC-адрес от передачи. Чтобы доказать это, я начал передавать радиомаяк iOS с помощью приложения Locate на пятом поколении iPod Touch с iOS 8.3 и одновременно сканировал устройство как на устройстве Linux, так и на Nexus 5X с Android 6.0:

Android Найдите Beacon приложение на Nexus 5X с Android 6.0: MAC адрес: 60: 35: 48: 79: D8: 08

Linux Bluez sudo hcitool lescan: MAC адрес: 60: 35: 4B: 79: D8: 0B

Как вы можете видеть, оба устройства считывают один и тот же MAC-адрес, доказывая, что он не подделан при сканировании в Android или Linux. больше

Два примечания:

  • связи Bluetooth MAC-адрес сообщает IPod Touch с прошивкой 8.3 в меню Настройки -> Общие -> Bluetooth отчеты 2C: FF: EE: хх: хх: хх (последние три октеты закрыты) отличается от переданного адреса. Это говорит о том, что iOS рандомизирует MAC-адрес при передаче.

  • MAC-адрес Bluetooth, обнаруженный Linux и Android, не изменяется при остановке и перезапуске рекламы на устройстве iOS, предполагая, что iOS сохраняет тот же рандомизированный адрес через перезагрузки. После перезагрузки устройства iOS и перезапуска передачи Linux и Android обнаружили другой MAC-адрес: 46: 59: C9: CB: 0C: D5. Это говорит о том, что рандомизированный переданный MAC изменяется через перезагрузки на iOS.

+0

Спасибо за разъяснение .. Я читал в некоторых статьях, так как зефир, когда Android делает фон Wi-Fi и Bluetooth сканирования (для поиска открытых сетей или маяков Eddystone Bluetooth) сканирование подделывает МАС-адрес и идентифицируют как рандомизированное значение. Таким образом, он рандомизирует MAC-адрес во время сканирования, но не тогда, когда он доступен для обнаружения? Еще один вопрос - я читал о функции Bluetooth LE Privacy (https: //blog.bluetooth.com/bluetooth-technology-protect-your-privacy), в котором говорится, что рандомизация адресов mac выполняется в самом аппаратном обеспечении, так что это разрешено только в периферии? – clearb

+0

Поддержка Bluetooth-чипсетов для рандомизации MAC - это общая аппаратная функция, но, насколько мне известно, на Android нет возможности включить ее, потому что нет привязок API. И да, с Android 6.0 API BLE вернет поддельный MAC-адрес для обнаруженных пакетов (внутренне Android отображает поддельный адрес на реальный адрес). Это чисто отображение при получении. API-интерфейсы CoreBluetooth на iOS делают что-то подобное. Android 5.x не сделает этого, что позволит вам прочитать фактический MAC. То же самое верно для Windows и Linux API, которые возвращают фактический MAC во время сканирования устройства. – davidgyoung

+0

Не могли бы вы прояснить или предоставить ссылку, объясняющую - «И да, с Android 6.0, API BLE вернет поддельный MAC-адрес для обнаруженных пакетов (внутри Android отображает поддельный адрес на реальный адрес)». So spoofing происходит только тогда, когда Bluetooth сканирует не во время рекламы? То же самое с IOS? http://stackoverflow.com/questions/28602672/android-5-static-bluetooth-mac-address-for-ble-advertising Эти вопросы, похоже, указывают на обратное ... Простите, если мои вопросы наивны – clearb

Смежные вопросы