BLEのsnifferを作成する

仕事でBLE通信を扱うので、こちらも勉強を始めた。

Bluetooth Low Energyをはじめよう

とりあえずこの本を読んでみたが、専門用語が多く正直理解度はまだまだ。

ただ、WiresharkでBLEがパケットキャプチャできるツールが紹介されていたので

それを試してみることにした。

nRF Sniffer for Bluetooth LE - nordicsemi.com

パケットの息吹を感じれば理解も深まるはず

 

ということでRequired HardwareとなっているnRF52840 DKを入手。

海外から送られてきて1週間ぐらいで届いた。

f:id:Messerarche:20200430121701p:plain

ラズパイっぽい本体と、よくわからんタグが箱に入ってた。

正直この辺はど素人なので手探り感満載でセットアップしていく。

この英語のドキュメントをたぐればなんとかなると信じて。

Nordic Semiconductor Infocenter

 

f:id:Messerarche:20200430113648p:plain

 

Minimum requirements

f:id:Messerarche:20200430113814p:plain

 

この中で準備が必要そうなのはSEGGER J-Link Software

https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack

こちらのここからダウンロード。

f:id:Messerarche:20200430114002p:plain

今回はmacでやります

 

インストール開始

f:id:Messerarche:20200430120810p:plain

特に難しいところはないので割愛

 

f:id:Messerarche:20200430122124p:plain

NFC・・・え、もしかしてこのタグみたいなやつがNFC??

f:id:Messerarche:20200430122204p:plain

ささった・・・!

といってもこれ、スマホにnRF Toolboxというアプリをインストールするためだけっぽいので正直いらなかったかも(以降も特に出番なし)

 

 

f:id:Messerarche:20200430122258p:plain

 

a.PCとUSBケーブルでつなぐ→OK

b.SW9をVDDに。最初からVDDっぽい

f:id:Messerarche:20200430123052p:plain

c.SW8をON!

f:id:Messerarche:20200430123151p:plain

LEDが光り出した。

f:id:Messerarche:20200430124908p:plain

PCに認識された。

 

f:id:Messerarche:20200430123528p:plain

ここから用途に応じてソフト落としてこいってことかな?

今回はsniffer目的なのでこいつをダウンロード

nRF Sniffer for Bluetooth LE - nordicsemi.com

→nrf_sniffer_for_bluetooth_le_3.0.0_129d2b3.zipを入手。

 

次に、nRF snifferファームウェア

nRF Connect Programmerというソフトで書き込む。

nRF Connect for Desktop - nordicsemi.com

 

f:id:Messerarche:20200430155357p:plain

Programmerを選択

 

左上のselect deviceで今繋いでいるボードを選択

f:id:Messerarche:20200430155449p:plain

Readを押すとメモリの中身が見えるらしい。

f:id:Messerarche:20200430155800p:plain

何か出たけどなるほどわからん

 

 

Add HEX fileでファームを選択。

f:id:Messerarche:20200430155716p:plain

 

HEXファイルは先ほどダウンロードした

nrf_sniffer_for_bluetooth_le_3.0.0_129d2b3.zipの中にある

f:id:Messerarche:20200430160128p:plain

って・・・いっぱいある!どれやねん。

 

ドキュメントをよくよく探したら書いてあった。

f:id:Messerarche:20200430160336p:plain

今回52840を使っているので、PCA10056か。

 

選んだらこうなった。

f:id:Messerarche:20200430160652p:plain

左がBefore,右がAfter。中身は相変わらずわからんけども

 

Erase & writeで書き込み。

 

再度READしたら左と右の図の吹き出しに書いてあることが同じになったので、書き込めたっぽいw

 

 

次のステップへ

 

コマンドウィンドウでhexファイルのあった隣のフォルダ、extcapフォルダに移動

pip3 install -r requirements.txt

を実行。(PCにpythonがインストールされていることが前提。)

f:id:Messerarche:20200430161458p:plain

 

するっといくかと思いきや

f:id:Messerarche:20200430161607p:plain

 

Xcodeのライセンスに承諾しろと。

長々したライセンス文を読んだら承諾コマンドが最後に書いてあったので実行

f:id:Messerarche:20200430161748p:plain

 

って打ったら別の文章を読めとでてきたw

次の文章もハイハイと読んで

最後にagreeと打ってOKになったっぽい。

f:id:Messerarche:20200430161916p:plain

あらためてpip3 install -r requirements.txt実行。

sudoしてなくて怒られたのはさておき無事インストール完了。

 

Wiresharkを起動。(←入ってない人は別途インストール要)

Wireshark > About Wireshark(Macの場合)

からfoldersを選択

f:id:Messerarche:20200430175621p:plain



このURLをクリックして開いたフォルダに、extcapフォルダ内のデータをコピー

f:id:Messerarche:20200430175730p:plain



 

コマンドウィンドウで今コピーしてきたフォルダへ移動

f:id:Messerarche:20200430175710p:plain



nrf_sniffer_ble.sh --exrcap-interfaces

を実行。うまく通らない。

f:id:Messerarche:20200430170325p:plain

エラー文と中身から、パスの問題かな・・・?

f:id:Messerarche:20200430170408p:plain

 

./nrf_sniffer_ble.sh --extcap-interfaces

で動いた。

 

refresh interfaceをすると

f:id:Messerarche:20200430171512p:plain

 

 

インターフェースがでてきた。あとちょっとや!

f:id:Messerarche:20200430180206p:plain



 

 

プロファイルの設定

f:id:Messerarche:20200430175955p:plain



ここから開いたフォルダにあるprofiles配下に

Profile_nRF_Sniffer_Bluetooth_LEフォルダをそのままぶちこむ

f:id:Messerarche:20200430171901p:plain

 

configuration profileから

f:id:Messerarche:20200430172034p:plain

 

さっき追加したやつを選んでOK

f:id:Messerarche:20200430171948p:plain

 

これで準備はととのったっぽい

 

 

近くにBLE通信するデバイス達(セントラル+ペリフェラル)を置いて・・・

f:id:Messerarche:20200430180706p:plain

 

start!

f:id:Messerarche:20200430180312p:plain

 

おおおーー見えた!

満足したので中身をがっつり確認するのはまた今度。