在Windows 7中找到蓝牙链接密钥,以在双启动计算机上对设备进行双配对


12

如何在Windows 7中为配对设备挖掘蓝牙链接密钥这是否取决于我使用的(Toshiba)蓝牙堆栈,还是在Windows 7中有通用的存储位置?

注意:我不是在谈论用户在配对过程中通常键入的六位数代码-这是毫无用处的,因为在配对过程后会丢弃该代码。我的意思是设备在配对期间交换的128位链接密钥,此后用于加密所有蓝牙流量。

背景:

我在笔记本电脑上双启动Windows 7 / Ubuntu,并且希望将手机与两个操作系统都配对。由于双启动计算机只有一个蓝牙适配器,因此只有一个蓝牙地址,因此我无法与手机进行两次配对,因为在第二次配对(Windows)上,手机仅将先前的配对(Linux)替换为相同的蓝牙地址。

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(带有或不带有冒号)将其grep的情况。

那么,如何在Windows 7中找到配对设备的链接密钥

一些参考信息:Wikipedia:蓝牙现在的安全性:蓝牙安全性

Answers:


7

你应该使用的注册表项是:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys

在我的计算机上,它拒绝让我访问此密钥。在看到子键之前,我不得不将所有者更改为管理员。

如果您使用的是东芝蓝牙堆栈,则其密钥存储在其他位置。可以找到位置,也可以简单地返回Microsoft堆栈。在后一种情况下,蓝牙密钥将如上所述存储在注册表中。

线程描述了该过程:

  1. 卸载东芝蓝牙(添加/删除程序),
  2. 重启,
  3. Windows现在应该检测“新的”蓝牙设备并为其安装自己的驱动程序。

警告:首先创建一个系统还原点,并确保您拥有东芝驱动程序的安装介质以备后用(以防万一)。胜利哭泣之前,请对配对电话的功能进行良好的测试。


我将所有者更改为管理员,然后允许我访问该密钥,但是不幸的是它不包含任何子密钥。
Ilari Kajaste 2011年

配对时您这样做了吗?
harrymc

是的,我已经将手机(加上其他两个设备)与Windows配对。不过,当时我还没有连接到任何一个-我认为这没关系,因为无论如何都必须存储密钥。
Ilari Kajaste 2011年

1
我确信东芝不会使用Microsoft注册表项。您可以回到Microsoft堆栈吗?
harrymc

1
线程显示:1.卸载Toshiba Bluetooth(添加/删除程序),2.重新启动,3. Windows现在应检测到“新”蓝牙设备并为其安装驱动程序。首先创建系统还原点,并确保您具有Toshiba驱动程序的安装介质(以防万一)。如果这可行,请仅测试您实际使用的配对电话的功能。
harrymc 2011年

5

注册表项对管理员不可见,您应该以系统帐户身份打开注册表:

这适用于带有ThinkPad蓝牙4.0适配器的ThinkPad上的Windows 7,但可能与其他Windows系统一起使用

下载PsExec:http : //technet.microsoft.com/zh-cn/sysinternals/bb897553.aspx

将其解压缩到c:\ portable \ pstools \打开cmd,单击开始,键入cmd,按Enter,在黑白窗口内键入:

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

regedit打开,导航至: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\

在那里,您会找到所有蓝牙适配器的MAC地址,并且在每个适配器下方,是所有已配对设备的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 

来自@Cristian:我在我的Xubuntu 15.10 / Windows 8双启动计算机上使用了thezeroth描述的方法,它的工作原理很吸引人。唯一的问题是,在Xubuntu上,配对密钥不在提到的文件中,而是在子文件夹中的一个名为Info的文件中,该子文件夹以唯一的标识符鼠标(logitech M535)命名。除此之外,完美的解决方案。
fixer1234

3

我遇到了完全相同的问题,因此我找到了这篇文章,现在想分享我的经验。如果您使用的是Android智能手机,则该任务实际上可能要容易得多,因为两个设备上都应存在配对链接密钥。

最有用的工具是Android SDK中的ADB。

假设电话具有XX ^ 6地址和PC-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上的类似文件中即可:

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注册表中获取密钥。我确实收到了该安全消息对话框,所以我使用了“ chntpw”本机linux实用程序,该实用程序允许重置密码或编辑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.#..`.

如您所见,该数字与上述文件中的数字完全相同。希望它将对后代有所帮助。


您的设备是否已植根/是否已安装BusyBox?“查找”命令失败。

0

作为参考,在Microsoft蓝牙堆栈上,链接密钥位于HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\aabbccddeeffaabbccddeeff是您的蓝牙适配器的位置。由于已经安装了适配器,因此该密钥应该存在。

在该键内,您可以有多个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”


欢迎来到超级用户!您能详细说明一下吗?也许编辑您的答案以解释您在描述什么以及为什么提出该建议。谢谢!
bertieb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.