Android 版 LINE v9.1.1 をざっくり解析してみた

利用する権限についての調査

・大体の位置情報へのアクセス
・詳しい位置情報へのアクセス
・位置情報の拡張コマンドへのアクセス
・ネットワーク状態へのアクセス
・Wifiの状態へのアクセス
・BlueTooth
・BlueTooth管理権限
・ブロードキャストのSTICKYを許可
・電話をかける
・カメラの撮影
・ネットワークの設定変更

・Wifiの設定変更
・KEYガードの無効化
・通知なしのダウンロード
・指紋の仕様
・アカウントの取得
・タスクの取得
・インターネットアクセス
・オーディオ設定の変更
・NFCへのアクセス
・コンタクトへのアクセス
・外部ストレージへのアクセス
・電話のステータスへのアクセス
・起動完了の受信
・オーデイオの録音
・システム通知ウインドウ
・バイブレーション
・画面ロックの復帰
・外部ストレージへの書き込み
・設定の書き込み
・ショートカットの作成
・課金
・クラウドからの受信
・PlayStore のインストール情報サービス(finsky)
プライバシー設定

内部的に

SECRECY_OF_COMMUNICATION
TARGETING_ADVERTISE
LOCATION
PHONE_NUM_MATCHING
OLD_BEACON
BEACON

Companion

の7つの設定がある。

PHONE_NUM_MATCHING と言うな前から分かるように、これは、アカウントと 電話番号の紐付けが終わってるかどうかと言うフラグであるので、ユーザーの設定と言うよりはシステムの状態を表すものらしい。

ちなみに、プライバシー設定画面で LINE Beacon の使用のチェックボックスはPRIVACY_USAGESTATUS_BEACON と言う名前で定義されている
設定名は「settings_privacy_usagestatus_beacon」

実は、 BEACON の仕様が 途中で変わったため、 通常 BEACON で動作しているのか、 OLD_BEACON の状態で動作してるのかチェックしている。両方使えない場合、 LINE Beacon の設定は無効になるようだ。

個体識別をどうやってるかと言うと、
android.bluetooth.BluetoothDevice->getAddress()
と言う関数で物理アドレスに変換し、その後Base64でテキスト化して保存しているのだが、アクセス自体は  PluginResult というコールバック内部で Beacon 自体へのアクセスに失敗しなければ処理されるようだ 

大量のBLE関数で構成されていたので、Android版はBLEの機能で識別してるということで間違いないだろう

Bluetooth Low Energy(BLE)/ iBeaconとは - Qiita
LINE アプリ側で Macアドレスが取得できるわけだが、
取得できるBLE端末の情報 を見るとMACアドレスも取得できるとあるのでこれを組み合わせればGPSやWiFiの位置情報を利用しなくても位置情報が把握できるわけだ。
iOS にはこの辺りが書かれていないので、もしかすると、位置情報がLINEにダダ漏れなのはAndroidだけの可能性もある。

もちろん、UUID(ユニークな文字列)を送って、iOS 側の Bluetooth に読み込ませて、LINEアプリから サーバーに送信させて照合することで位置情報を把握するのは可能だ。

回避するためには、BlueTooth を常にOFFにしておくしかない

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です