7

はじめに: 私は Bluetooth スタックとプロトコルに完全に慣れていない状態でこの問題に取り組んでいるため、私の仮定の誤りが明らかになるため、何度か編集を行う必要があるかもしれません。

Bluetooth デバイス、Scosche myTREK Pulse Monitorに接続しようとしています。Android用の「公式」アプリを使用してデバイスに接続でき、 を使用してBluetoothパケット出力をキャプチャしましたhcidump。リンクキー交換までの接続プロセスを読んで理解できます。ただし、デバイスは HCIEncrypt Changeイベントを送信します。その後、ほとんどの (すべてではない) パケットが ACL パケットとしてラベル付けされ、解釈が困難になります。

基本的な質問は次のとおりです: Bluetooth はデータを暗号化しますか? 安全に復号化する方法はありますか? これは ACL パケットへの移行に関連していますか?

以下は、特定の接続に対して によって提供されるパケット出力のサンプルでhcidump、リンク キーの受け渡しから始まります。(>モニター送信データを参照)

> HCI Event: Link Key Request (0x17) plen 6
  0000: ** ** ** ** ** **                                 ??????

< HCI Command: Link Key Request Reply (0x01|0x000b) plen 22
  0000: ** ** ** ** ** ** ** **  ** ** ** ** ** ** ** **  ???????????????
  0010: ** ** ** ** ** **                                 ??????

> HCI Event: Command Complete (0x0e) plen 10
  0000: 01 0b 04 00 ** ** ** ** ** **                    ....??????

> HCI Event: Encrypt Change (0x08) plen 4
  0000: 00 0c 00 01                                       ....

> ACL data: handle 12 flags 0x02 dlen 12
    L2CAP(s): Connect req: psm 1 scid 0x0040

< ACL data: handle 12 flags 0x00 dlen 16
    0000: 0c 00 01 00 03 02 08 00  40 00 40 00 01 00 00 00  ........@.@.....

< ACL data: handle 12 flags 0x00 dlen 10
    0000: 06 00 01 00 0a 01 02 00  02 00                    ..........

> HCI Event: Number of Completed Packets (0x13) plen 5
  0000: 01 0c 00 02 00                                    .....

> ACL data: handle 12 flags 0x02 dlen 16
    L2CAP(s): Info rsp: type 2 result 0
      Extended feature mask 0x0000

< ACL data: handle 12 flags 0x00 dlen 16
    0000: 0c 00 01 00 03 02 08 00  40 00 40 00 00 00 00 00  ........@.@.....

< ACL data: handle 12 flags 0x00 dlen 12
    0000: 08 00 01 00 04 02 04 00  40 00 00 00              ........@...

> HCI Event: Number of Completed Packets (0x13) plen 5
  0000: 01 0c 00 02 00                                    .....

> ACL data: handle 12 flags 0x02 dlen 16
    L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4
      MTU 48 

< ACL data: handle 12 flags 0x00 dlen 18
    0000: 0e 00 01 00 05 03 0a 00  40 00 00 00 00 00 01 02  ........@.......
    0010: 30 00                                             0.

> ACL data: handle 12 flags 0x02 dlen 14
    L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 0
      Success

> ACL data: handle 12 flags 0x02 dlen 36
    L2CAP(d): cid 0x0040 len 32 [psm 0]
      0000: 06 00 01 00 1b 35 11 1c  00 00 00 00 de ca fa de  .....5......??·?
      0010: de ca de af de ca ca fe  00 26 35 03 09 00 04 00  ???»????.&5.....

< ACL data: handle 12 flags 0x00 dlen 33
    0000: 1d 00 40 00 07 00 01 00  18 00 15 35 13 35 11 09  ..@........5.5..
    0010: 00 04 35 0c 35 03 19 01  00 35 05 19 00 03 08 12  ..5.5....5......
    0020: 00                                                .

> HCI Event: Number of Completed Packets (0x13) plen 5
  0000: 01 0c 00 02 00                                    .....

> ACL data: handle 12 flags 0x02 dlen 12
    L2CAP(s): Disconn req: dcid 0x0040 scid 0x0040

< ACL data: handle 12 flags 0x00 dlen 12
    0000: 08 00 01 00 07 04 04 00  40 00 40 00              ........@.@.

> ACL data: handle 12 flags 0x02 dlen 12
    L2CAP(s): Connect req: psm 3 scid 0x0041

< ACL data: handle 12 flags 0x00 dlen 16
    0000: 0c 00 01 00 03 05 08 00  40 00 41 00 00 00 00 00  ........@.A.....

> HCI Event: Number of Completed Packets (0x13) plen 5
  0000: 01 0c 00 02 00                                    .....

> ACL data: handle 12 flags 0x02 dlen 16
    L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4
      MTU 895 

< ACL data: handle 12 flags 0x00 dlen 18
    0000: 0e 00 01 00 05 06 0a 00  41 00 00 00 00 00 01 02  ........A.......
    0010: 7f 03                                             ..

< ACL data: handle 12 flags 0x00 dlen 16
    0000: 0c 00 01 00 04 03 08 00  41 00 00 00 01 02 f5 03  ........A.....?.

> HCI Event: Number of Completed Packets (0x13) plen 5
  0000: 01 0c 00 02 00                                    .....

> ACL data: handle 12 flags 0x02 dlen 18
    L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 4
      MTU 1013 

この時点で、デバイスによって配信されるペイロードは、1 回の実行内ではなく、実行ごとに大幅に異なります。簡潔にするために、残りのログをペーストビンに入れました:リンク

4

1 に答える 1

7

はい、Bluetooth は無線でデータを暗号化します。はい、これは ACL データに適用されます。しかし、HCI インターフェイスを介して表示されているデータは、既に復号化されています。あなたの問題は、ACL データ ストリームを解釈する方法がわからないことです。ACL データの上に、いくつかのレベルのプロトコルがあります。デバイスでプロトコルが文書化されていない限り、うまくいかない可能性があります。Android アプリと通信するために SPP (シリアル ポート プロファイル) または RFCOMM を実行している可能性が最も高いです。したがって、SPP -> RFCOMM -> L2CAP -> ACL データをデコードするための次のネストされたプロトコル層があります。

デバイス/アプリが SPP に加えて追加のアプリケーション レベルの暗号化を行うことも可能です。その場合、あなたは運が悪いです。

于 2012-10-10T21:17:41.557 に答える