Android の Google Authenticator のデータをダンプしてバックアップする

Android の Google Authenticator 色々な認証に使えて便利ですが,以前 Nexus5 を紛失した時や LGL22 でデータが飛んでしまった後復旧が面倒でした.どうにかバックアップが取れないかなと調べてみました.

Android からデータを取得

/data/data/com.google.android.apps.authenticator2/databases/databases がデータが格納されているファイルらしいです.
adb pull で持ってきたいけど権限がないので一旦 /storage/sdcard0/ に cp する

% adb shell
shell@g2:/ $ su
root@g2:/ # cp /data/data/com.google.android.apps.authenticator2/databases/databases /storage/sdcard0/

ローカルPC に退避

% adb pull /storage/sdcard0/databases .

/storage/sdcard0/ に cp したデータを消す.暗号化領域の下のはずだけど一応上書きしてから削除

% adb shell
shell@g2:/ $ su
root@g2:/ # ls -l /storage/sdcard0/databases
-rw-rw---- root     sdcard_r    16384 2015-10-09 22:51 databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # rm /storage/sdcard0/databases
root@g2:/ # ^D
shell@g2:/ $ ^D

データ形式を確認してdump

該当ファイルは file コマンドによると SQLite3 のようなので dump してみる

% file ./databases
./databases: SQLite 3.x database
% sqlite3 ./databases
SQLite version 3.8.11.1 2015-07-29 20:00:57
Enter ".help" for usage hints.
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE android_metadata (locale TEXT);
INSERT INTO "android_metadata" VALUES('ja_JP');
CREATE TABLE accounts (_id INTEGER PRIMARY KEY, email TEXT NOT NULL, secret TEXT NOT NULL, counter INTEGER DEFAULT 0, type INTEGER, provider INTEGER DEFAULT 0, issuer TEXT DEFAULT NULL, original_name TEXT DEFAULT NULL);
 :

ここで取得した PRIMARY KEY を HOTP TOKEN を割り出す script の "google-authenticator.py に食わせると Android App と同じコードが帰ってくるのを確認しました.勿論普通に認証も可能.

IMG_20151010_012917

ということで要root ですが, /data/data/com.google.android.apps.authenticator2/databases/databases を退避して他の端末に持って行っても動作するかも.少なくとも PRIMARY KEY は入手できるので手動で入力すれば OK ですね.
とはいえ端末紛失時には作りなおしたほうが良いでしょうが.

root が取れない場合は登録時に PRIMARY KEY をメモしておくくらいですかね.QR Code だけしか見えない場合は Google Authenticator に食わせる前に別のリーダーを利用したりすれば可能です
例えば以下のような読み取り内容の場合 6QHI5WW6H3FMJ2ZI が PRIMARY KEY です.

otpauth://t│·········· otp/mk@micro?secret=6QHI5WW6H3FMJ2ZI

LGL22 導入アプリメモ

LGL22 ですが,先日起動してもすぐに再起動してしまう様になってしまいました.起動してパスコードを入力してデスクトップが表示されるくらいの辺りで再起動してしまいます.アイコンが減っていたりするのでストレージが死んだかファイルシステムが壊れているかかな?と初期化しました.

とりあえず復活したようなので導入アプリのメモを書いておきます.

  • Squera レジ
    関東では使うことあったけど鹿児島では一度も使ったことがない……
  • PayPal
  • Debian News
  • Go雨!探知機
    XRAIN をオーバーレイしてくれる
  • Gmail
  • K-9 Mail
    Gmail 以外のメールに利用
  • APG
    主に K-9 Mail での GPG に
  • 音泉
  • Tuneln Radio
  • Raziko
  • Radiko.jp
  • らじるらじる
  • Google Playミュージック
  • DeviantArt
  • Pixiv
  • リトルノア
    ゲーム.何気に続けてる
  • Ingress
    緑です
  • Ingress Helper
  • Intelgrated Timer
  • Google+
    利用率が一番高い
  • Mustard
    Twitter や GNU Social 対応クライアント
  • SobaCha
    軽くてユーザーストリームに対応した Twitter クライアント
  • Twitter
  • Plag
  • Instagram
  • Snapchat
  • Swarm
  • tsu
  • Tumblrunning
  • WharsApp
  • Slack
  • SlideShare
  • Ustream
  • WiFLE WIFI
    War Driving に(携帯局も拾う)
  • mineo スイッチ
    SIMの利用料確認に
  • Debian
    chroot で Debian が動く.暇つぶしに良い
  • Programmer Keyboard
  • Google Goggles
    翻訳(日本語非対応)したりバーコード読んだり
  • WiFi QR Share
    端末で設定してある Wi-Fi 設定を QR Code で表示したり※root
  • プレゼンタイマ
  • Bluetooth Auto Connect
    Bluetooth 機器に自動接続する
  • OsmAnd+
    OSM の確認,POI 登録など
  • MAPS ME
    OSM 地図確認.見やすい
  • OSMTraker
    GPS ログ取りに
  • Strava
    散歩時のログ取りなどに
  • GPS Status
  • Google Camera
  • Jota+
  • JotterPad
  • LibreOffice Viewer
  • N2 TTS
  • Voice Notify
    N2 TTS とあわせて喋らせる
  • ownCloud
  • Photo Editor
  • Rapica Reader
    フェリー乗船前の残高確認に
  • SMARTalk
  • SuperSU
  • 認証システム
    Google Authenticator.バックアップコード引っぱり出したり再設定が面倒だった.バックアップ方法を調べたい.
  • Titanium Backup