11

Как я могу найти ключ связи Bluetooth для сопряженного устройства в Windows 7? Является ли это чем-то, что зависит от используемого мной стека Bluetooth (Toshiba), или есть общее место для их хранения в Windows 7?

Примечание: я не говорю о шестизначном коде, обычно вводимом пользователем во время сопряжения - это бесполезно, так как он отбрасывается после процесса сопряжения. Я имею в виду 128-битный ключ связи, который устройства обмениваются во время сопряжения, а затем используют для шифрования всего своего трафика Bluetooth.

Фон:

Я запускаю Windows 7 / Ubuntu на своем ноутбуке и хочу, чтобы мой телефон был подключен к обеим ОС. Поскольку на компьютере с двойной загрузкой имеется только один адаптер Bluetooth и, следовательно, только один адрес Bluetooth, я не могу выполнить две пары с телефоном, так как при второй связи (Windows) телефон просто заменяет предыдущую пару (Linux) на тот же адрес Bluetooth.

Поток на форумах Ubuntu указал мне на то, что мне нужно сделать - сначала соединиться в Linux, затем в Windows, а затем заменить ключ связи на стороне Linux тем, который согласован в Windows.

Я могу найти ключ сопряжения на стороне Linux из /var/lib/Bluetooth/[BD_ADDR]/linkkeys - никаких проблем там нет.

Однако на стороне Windows я не могу найти ключ. Согласно сообщению форума, на стороне Windows , ключ должен быть в SYSTEM\ControlSet002\services\BTHPORT\Parameters\Keys\[BD_ADDR] , но в то время как этот ключ реестра существует, то оно имеет не подразделов. (И подобный путь реестра в ControlSet001 также не имел никаких подразделов.)

Одна вещь, которую мне поручили сделать, - перехватывать все события во время сопряжения с Sysinternals Process Monitor. Я сделал это, но мне не удалось найти какую-либо полезную информацию из захваченных событий, даже путем экспорта данных в огромный XML-файл и получения его с помощью BD_ADDR (с двоеточиями или без них).

Так как же найти ключ ссылки для сопряженного устройства в Windows 7?

Некоторая справочная информация: Википедия: Bluetooth, Безопасность сейчас: Безопасность Bluetooth

5 ответов5

6

Ключ реестра, который вы должны использовать:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys .

На моем компьютере он не позволил мне получить доступ к этому ключу. Мне пришлось сменить владельца на Администратора, прежде чем я увидел подключ.

Если вы используете стек Toshiba Bluetooth, его ключи хранятся где-то еще. Можно либо найти где, либо просто вернуться в стек Microsoft. В последнем случае ключи Bluetooth будут храниться в реестре, как указано выше.

Этот поток описывает процесс:

  1. Удалите Toshiba Bluetooth (Установка и удаление программ),
  2. Перезагружать,
  3. Теперь Windows должна обнаружить "новое" устройство Bluetooth и установить для него собственные драйверы.

Внимание: сначала создайте точку восстановления системы и убедитесь, что у вас есть установочный носитель для драйвера Toshiba для возврата (на всякий случай). Хорошо протестируйте функциональность сопряженного телефона, прежде чем кричать о победе.

4

Ключи не видны администратору, вы должны открыть реестр как системную учетную запись:

Это для Windows 7 на ThinkPad с адаптером ThinkPad Bluetooth 4.0, но может работать с другими системами Windows

Загрузите PsExec:http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

Распакуйте его в c:\portable\pstools\ open cmd, нажмите «Пуск», введите «cmd», нажмите enter, внутри черно-белого окна:

c:\portable\pstools\psexec -s -i regedit

regedit открывается, перейдите к: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\

там вы найдете MAC-адрес всех ваших bluetooth-адаптеров, а под каждым адаптером - MAC-адреса всех сопряженных устройств с их ссылочными ключами.

чтобы определить MAC-адрес вашего адаптера:

bluetooth settings> Hardware > ThinkPad Bluetooth 4.0 > Properties > Advanced > Address

чтобы определить MAC-адрес вашего устройства (клавиатуры / мыши):

Control Panel > Hardware and Sound > Devices and Printers > right click your device > Properties > Bluetooth > Unique Identifier 
3

У меня была точно такая же проблема, поэтому я нашел этот пост и теперь хочу поделиться своим опытом. Если у вас есть Android-смартфон, эта задача может быть гораздо проще, так как связывание Linkkey должно присутствовать на обоих ваших устройствах.

Наиболее полезным инструментом является ADB от Android SDK.

Давайте предположим, что у телефона есть адрес XX ^ 6 и ПК - YY ^ 6

$ adb shell
~ # find|grep linkkeys
~ # ./data/misc/bluetoothd/XX:XX:XX:XX:XX:XX/linkkeys
~ # cat ./data/misc/bluetoothd/XX:XX:XX:XX:XX:XX/linkkeys
YY:YY:YY:YY:YY:YY 393FCA48F0DB57AA4D59F423E4EA60D5 5 -1
~ #

Таким образом, вы можете просто выбрать ключ из этого файла и поместить его в аналогичный файл на вашем ПК:

pc $ sudo -s
pc # cat /var/lib/bluetooth/YY:YY:YY:YY:YY:YY/linkkeys
XX:XX:XX:XX:XX:XX 393FCA48F0DB57AA4D59F423E4EA60D5 5 0

Этот способ кажется наиболее простым, поскольку в Linux и Android обычно используется один и тот же стек bluez.

Тем не менее, если вы лично презираете такую технику, есть другой способ получить ключ из реестра Windows, если используются стандартные драйверы Windows. Я получил это диалоговое окно с сообщением о безопасности, поэтому я использовал встроенную утилиту linux "chntpw", которая позволяет сбросить пароль или отредактировать файл реестра Windows. Файл, который требуется, был "windows\system32\config\SYSTEM".

Здесь это идет:

$ chntpw -e SYSTEM
blah-blah-blah
> cd ControlSet001\services\BTHPORT\Parameters\Keys\yyyyyyyyyyyy
(...)\BTHPORT\Parameters\Keys\5cac4c10c4f1> ls
Node has 0 subkeys and 1 values
  size     type            value name             [value if type DWORD]
     16  REG_BINARY        <xxxxxxxxxxxx>

(...)\BTHPORT\Parameters\Keys\5cac4c10c4f1> hex xxxxxxxxxxxx
Value <xxxxxxxxxxxx> of type REG_BINARY, data length 16 [0x10]
:00000  39 3F CA 48 F0 DB 57 AA 4D 59 F4 23 E4 EA 60 D5 9?.H..W.MY.#..`.

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

0

Для справки: в стеке Microsoft Bluetooth ключи ссылок расположены в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\aabbccddeeff где aabbccddeeff - это ваш адаптер Bluetooth. Поскольку адаптер уже установлен, этот ключ должен существовать.

В этом ключе вы можете иметь несколько значений REG_BINARY, где имя значения - это MAC-адрес сопряженного устройства (в той же форме - шестнадцатеричный, нижний регистр, без разделителей), а значение - это ключ ссылки (16 байт).

Чтобы получить ключи ссылки из OS X, выполните (в OSX Terminal) defaults read /private/var/root/Library/Preferences/blued.plist . В LinkKeys у вас должен быть ключ связи на MAC-адрес сопряженного устройства. Ключи закодированы в base64, поэтому: echo -n 'aabbcc...==' | base64 -d | hexdump -C и введите этот ключ в реестр Windows.

-1

PsExec.exe -s -i regedit /E% cd%\btkeys_export.txt "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .