LoginSignup
8
4

Android ストレージ内の暗号化済みSQLiteをDBeaverで接続する

Last updated at Posted at 2024-01-29

私がAndroidStudioでAndroidアプリの開発を行っているとき、SQLiteを使っていてデータの内容を確認できないのかなと思い、こちら(←リンク)を参考にしてDBeaver(DB管理ツール)にデータの内容を表示することができたので備忘録としてまとめておきます。

  • SQLiteとは
    ざっくり説明するとSQLiteはAndroidのSDKが標準サポートしているデータベースです。詳しくは以下参照。

DBのパスワードを取得できるか

後々に使うので一旦飛ばしてもいいですが、DBのパスワードを取得できないと後でつまずくので先に取得できるかを確認します。
開発環境によって違うとは思いますが、私はDatabaseオブジェクトを取得する部分をデバッグモードで止めてパスワードを確認しました。

SqlCipherのドライバのライブラリをダウンロード

以下からsqlite-jdbc-3.44.2.0.jarをダウンロード。(数字は最新版)

  • SqlCipherとは
    SqlCipherはSQLiteデータベースを拡張し、同じインターフェイスで暗号化されたローカルデータストレージを提供するオープンソースのライブラリです。

DBeaverでカスタムドライバの作成

DBeaverのメニューバーからデータベース⇒ドライバマネージャー⇒新規をクリック。
001..jpg
002.jpg

設定タブ

  • ドライバ名 = SqlCipherV3
  • ドライバタイプ = Generic
  • クラス名 = org.sqlite.JDBC
  • URLテンプレート = jdbc:sqlite:{file}
  • 他は設定不要
    003.jpg

ライブラリタブ

  • ファイルを追加からダウンロードしておいたsqlite-jdbc-3.44.2.0.jarを選択
    005.jpg

接続プロパティタブ

右クリックから新しいプロパティを追加

  • cipher = sqlcipher
  • fast_kdf_iter = 2
  • hmac_algorithm = 0
  • hmac_pgno = 1
  • hmac_salt_mask = 0x3a
  • hmac_user = 1
  • kdf_iter = 64000
  • legacy = 3
  • legacy_page_size = 1024
  • key は事前に取得しておいたパスワードを設定するがここでは空欄
    006.jpg

ここまで設定したらOK

Android端末からDBファイルを取得する

AndroidStudioでツールバーのWindow⇒Device Manager⇒デバイス右のオプションからOpen in Device Explorer
開発環境によって違うとは思いますが、私は/data/data/(プロジェクト名)/databases/にあったのでそれをPCにダウンロード。
007.jpg

いざ接続

新しい接続⇒SqlCipherV3を選択して次へ
008.jpg

一般タブ

パスに取得しておいたDBファイルを選択
009.jpg

ドライバのプロパティタブ

keyプロパティに最初に確認しておいたパスワードを設定⇒テスト接続して問題なければ終了
010.jpg

まとめ

苦戦しましたがデータベース表示することができました。
データ内容を確認したいときにどうぞ試してみてください。
011.jpg

8
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
8
4