LoginSignup
0
4

More than 3 years have passed since last update.

AndroidでBLEデバイスとの通信ログを見る(1)

Last updated at Posted at 2020-01-15

Jan 14 2020 更新


未知のBLE端末を、自前のオリジナルアプリから使う。っていうことをしたかったので、
BLEの仕様をハックするためにやったことの備忘録。

簡単にいうと、Androidでアプリの通信ログを取って、頑張って、どういう通信しているかを分析する。という感じになる。

準備

AndroidとMacを用意。

Androidの設定

Androidの開発者向けオプションを開く。
開発者向けオプションの出し方は、ググればすぐに出るので、それを参照。

例えば↓
[Android 4.2以降] 開発者向けオプションを表示させる方法@colorrabbit

開発者向けオプションから、スヌープログを有効化、また、USBデバッグを有効化する。

スヌープログを有効化した瞬間から、ログが吐き出される。
一度オフって、もう一度オンにすると、新しいログが吐き出されているっぽい。

Macの設定

まず、Terminalからadbコマンドを使えるようにする。
この記事を見て入れた。
adbをMacのターミナルで使えるようにする@furusin_oriver

※homebrewとかでも入れられるっぽい。

ちなみにADBは、PCに接続されたAndroidにTerminalからアクセスしちゃうぅ〜みたいなコマンド。

詳しい説明は、こことかにありそう。
忙しい人用に、冒頭だけ引用↓

Android Debug Bridge は adb と省略されます。 これは Android SDK の platform-tools に含まれるツールです。
このツールを用いると、現在利用可能なデバイス・エミュレータの列挙、シェルコマンドの発行、ファイルの転送などが行えます。
Eclipse から Android アプリをビルドしたときも、裏側で adb を用いてエミュレータまたは実際のデバイスに接続します。

次にWiresharkというログの解析アプリを入れる。

$ brew cask install wireshark

とすれば、Wireshark.appが自動でアプリケーションディレクトリに入っている。

ログを解析する

まず、AndroidをMacに繋ぐ。

$ adb devices

にデバイスが出れば接続できてることが確認できる。
接続できたら、早速ログファイルを抽出する。

$ adb bugreport report

でzipをダウンロードする。
コマンド実行後、少し待つと、report.zipというフォルダが今いるディレクトリに落ちてくるので解凍する。
reportの部分はフォルダの名前指定なので、なんでも良い。

その中のbugreport-bluexxxx-XXXX.000000.000-2020-01-01-00-00-00.txt的な奴を探す。

これにログがあるけど、Wiresharkでは読めない形式なので、変換する必要がある。

Googleがいい感じのスクリプトを配布しているので、それを使う。

btsnooz.py

btsnooz.pyをログの.txtと同じディレクトリに作って、Python2で実行する。

自分は、何も考えずPythonで実行したら、環境がPython3だったので、エラー出て5秒ほどハマった。

実行コマンドはこんな感じでよしなに。

$ python btsnooz.py bugreport-bluexxxx-XXXX.000000.000-2020-01-01-00-00-00.txt > BTSNOOP.log

BTSNOOP.logの部分は任意で改名して良い。

ようやく。

Wiresharkを起動し、先ほどのBTSNOOP.logを開くと記述されているログを見ることができる。

Macならこんな感じでいきなり開ける気がする。

$ open -a wireshark BTSNOOP.log

一旦ここまで。

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4