Windows 7でペアリングされたデバイスのBluetoothリンクキーを掘るにはどうすればよいですか?これは何かそれは私が使用しているBluetoothスタック(東芝)に依存していますか、それともWindows 7でこれらを保存するための一般的な場所はありますか?
注:私は通常、ペアリング中にユーザーが入力する6桁のコードについて話しているのではありません。ペアリングプロセスの後に破棄されるため、これは価値がありません。つまり、ペアリング中にデバイスが交換し、その後すべてのBluetoothトラフィックを暗号化するためにデバイスが使用する128ビットのリンクキーです。
背景:
私はラップトップでWindows 7/Ubuntuをデュアルブートし、電話を両方のOSとペアリングしたいと考えています。デュアルブートコンピューターにはBluetoothアダプターが1つだけ、したがってBluetoothアドレスが1つしかないため、2回目のペアリング(Windows)では電話が以前のペアリング(Linux)を同じBluetoothアドレスに置き換えるだけなので、2回ペアリングすることはできません。
buntuフォーラムのスレッド は、私がしなければならないことを指摘しました-最初にLinuxでペアリングし、次にWindowsでペアリングしてから、Linux側のリンクキーを、ネゴシエートされたWindowsで置き換えます。
Linuxサイドペアリングキーは/var/lib/Bluetooth/[BD_ADDR]/linkkeys
から見つけることができます-問題ありません。
しかし、Windows側ではキーを見つけることができません。フォーラムの投稿によると、Windows側ではキーはSYSTEM\ControlSet002\services\BTHPORT\Parameters\Keys\[BD_ADDR]
にあるはずですが、そのレジストリキーは存在しますがサブキーはありません。 (そして、ControlSet001の同様のレジストリパスにもサブキーがありませんでした。)
私に指示された1つのことは、 Sysinternals Process Monitor とのペアリング中にすべてのイベントをキャプチャすることです。私はこれを行いましたが、データを巨大なXMLにエクスポートしてBD_ADDR(コロンの有無にかかわらず)でそれをgreppingしても、キャプチャされたイベントから有用な情報を見つけることができませんでした。
では、Windows 7でペアリングされたデバイスのリンクキーを見つけるにはどうすればよいでしょうか。
一部の参照情報: Wikipedia:Bluetooth 、 Security Now:Bluetooth security
使用する必要があるレジストリキーは次のとおりです。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys
。
私のコンピューターでは、このキーへのアクセスを拒否しました。サブキーが表示される前に、所有者をAdministratorsに変更する必要がありました。
Toshiba Bluetoothスタックを使用している場合、そのキーは別の場所に保存されます。場所を見つけるか、単にMicrosoftスタックに戻ることができます。後者の場合、Bluetoothキーは上記のようにレジストリに保存されます。
この thread はプロセスを説明します:
注意:最初にシステムの復元ポイントを作成し、(念のため)戻るための東芝ドライバのインストールメディアがあることを確認してください。勝利を叫ぶ前に、ペアリングされた電話の機能を十分にテストします。
キーは管理者には見えません。システムアカウントとしてレジストリを開く必要があります。
これは、thinkpad bluetooth 4.0アダプターを備えたThinkPad上のWindows 7用ですが、他のWindowsシステムでも動作する可能性があります
PsExecをダウンロード: http://technet.Microsoft.com/en-us/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\
ここには、すべてのBluetoothアダプターの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
私はまったく同じ問題を抱えていたので、この投稿を見つけました。今、私の経験を共有したいと思います。 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 bluetoothスタックを使用するため、最も簡単なようです。
それでも、このような手法を個人的に軽視している場合、標準のWindowsドライバーが使用されていれば、Windowsレジストリからキーを取得する別の方法があります。そのセキュリティメッセージダイアログを受け取ったので、パスワードをリセットしたり、Windowsレジストリファイルを編集したりできる「chntpw」ネイティブLinuxユーティリティを使用しました。必要なファイルは「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.#..`.
ご覧のとおり、これは上記のファイルとまったく同じ番号です。それが将来の世代に役立つことを願っています。
参考までに、Microsoft Bluetoothスタックでは、リンクキーはHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\aabbccddeeff
にあります。ここでaabbccddeeffはBluetoothアダプターです。アダプタはすでにインストールされているため、このキーが存在するはずです。
そのキー内に、複数のREG_BINARY値を含めることができます。値の名前はペアになっているデバイスのMACアドレス(同じ形式で、16進数、小文字、セパレータなし)で、値はリンクキー(16バイト)です。
OS Xからリンクキーを取得するには、(OSXターミナルで)defaults read /private/var/root/Library/Preferences/blued.plist
を実行します。 LinkKeys内には、ペアリングされたデバイスのMACアドレスごとにリンクキーが必要です。キーはbase64でエンコードされているため、echo -n 'aabbcc...==' | base64 -d | hexdump -C
を実行し、このキーをWindowsレジストリに入力します。