@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

Android のマルチユーザと adb backup (2)

Android のマルチユーザー機能に関連して「制限付きプロフィール」というユーザーを作成する事ができます。このユーザーは、Owner と同じ Google アカウントなどを使用しつつ使えるアプリケーションを制限したりする事ができます。ぺレンタルコントロールなどで使うケースを想定している機能のようですね。

制限付きプロフィール
https://support.google.com/nexus/answer/3175031?hl=ja

何が制限されて、何が許可されるのか?
Android 4.3の制限付きプロフィールを試す
http://internet.watch.impress.co.jp/docs/column/shimizu/20130903_613668.html

制限付きプロフィールのユーザーを追加すると、まず(Ownerアカウントについて)画面ロックを有効にするように求められます。 制限付きプロフィールのユーザーがOwner側のユーザーにアクセスできない様にする為だと推測していますが、単純にユーザーを追加した場合には求められないんですよね>画面ロックの有効化

制限付きプロフィールでは、許可したアプリケーションが利用可能になる仕組みになっているので、ここでは例えば LINE を Owner 側の設定から許可して、制限付きプロフィールで使った場合に、どこにデータが置かれるかを確認してみます。

root@generic_x86:/data/user/11/jp.naver.line.android/databases # ls -l
ls -l
-rw-rw---- u11_a52 u11_a52 16384 2014-07-20 19:18 NewBadge.db
-rw------- u11_a52 u11_a52 8720 2014-07-20 19:18 NewBadge.db-journal
-rw-rw---- u11_a52 u11_a52 16384 2014-07-20 19:18 cafecache.db
-rw------- u11_a52 u11_a52 8720 2014-07-20 19:18 cafecache.db-journal
-rw-rw---- u11_a52 u11_a52 311296 2014-07-20 19:18 naver_line
-rw------- u11_a52 u11_a52 12824 2014-07-20 19:18 naver_line-journal

データとしては/data/user 配下に 11 という番号で新規のフォルダが作成され、その配下にデータベースファイルが配置されている状況です。

この時点では、まだ LINE を制限付きプロファイルでは実行していませんので、Owner アカウント側ので DB がコピーされている状況に見えます。

※LINE 自体が制限付きプロフィールの環境化で使えるのか未確認です、検索してみると制限付きプロフィールではうまく動作しないアプリケーションもあるようですね。

 

制限付きプロフィールについても、データの保管場所はユーザ用のフォルダが /data/user 配下に作成され、そこに置かれています。

このパスにあるデータは、adb backup の対象範囲外になりますので、制限付きプロフィールを使っている場合にも、追加したユーザと同じくバックアップはかなり難しい状況になるという事ですね。

 

 なお、マルチユーザー環境におけるAndroid のバックアップ設定については、現状では Owner アカウントしか設定できない仕様のようです。追加したユーザーでは「バックアップとリセット」も使えないと。

データをバックアップ、消去する
https://support.google.com/nexus/answer/2819582?hl=ja
複数のユーザーで 1 台のタブレットを使用している場合、[バックアップとリセット] オプションが表示されるのは、タブレットの所有者のみです。

 

 

 

Android のマルチユーザと adb backup (1)

AVD 上の Android でマルチユーザーを設定し、adb install コマンドで LINE をインストールしてみました。Owner と新しいユーザーの両方から LINE アプリケーションを起動する事ができますが、それぞれアプリケーションデータの保管場所は異なっています。

最初の Owner アカウントで LINE を実行すると以下二つのフォルダ配下にデータベース関連のファイルが存在している事を確認できます。

/data/data/jp.naver.line.android/databases

/data/user/0/jp.naver.line.android/databases

追加したユーザーのデータのデータベース関連ファイルは下記フォルダ配下になります。

/data/user/10/jp.naver.line.android/databases

作成した順番に 10,20 と番号が付与されるようですが、Owner については /data/data 配下と /data/user/0 配下の両方にデータがある事になりますが、/user/0 は /data/data へのリンクになっています。

新しく作成したユーザーでアプリケーションをインストールした場合、そのアプリケーションは Owner のアカウントからは見えません。とはいえ、アプリケーションのフォルダ自体は /data/data 配下に作成されてはきます。

追加したユーザーがインストールしたアプリケーションが、pm list packages コマンドで確認できるか試してみたのですが、別ユーザーでインストールしたアプリケーションはパッケージリストの中に表示されませんでした。この為、マルチユーザの端末については pm list packages でインストールされているアプリケーションを全て把握するのは難しそうです。

 

マルチユーザ環境で adb backup コマンドを実行した場合ですが、基本的にはシングルユーザーでバックアップ対象としている範囲だけをバックアップするようです。

まず、adb backup を実行した際の確認画面が、追加ユーザーでログインしている状態では表示されません。Owner アカウントでログインしている場合にはバックアップの確認画面が表示されます。

次にバックアップされるデータですが、例えば adb install でインストールした LINE は、apps\jp.naver.line.android としてバックアップされます。しかし、これは Onwer アカウント側のデータのみで、追加しているユーザーがある /user/10 配下のデータはバックアップに含まれていません。

また、追加ユーザーでインストールしたアプリケーションは、/data/data 配下にフォルダはありますが、バックアップにはこのフォルダが含まれてきません。

adb backup で -shared を指定した場合、/shard/0 としてバックアップが取れ、Ownerアカウントでは見えなかった Download フォルダ配下も取れているのですが、AVD 上での動作ですので実機でも同じ動作となるのかが分かりません。

 

adb backup コマンド自体はマルチユーザー環境を想定していないようですので、タブレットでマルチユーザーが使われている場合には、adb backup では不完全なバックアップしか取れない状況です。

 

マルチユーザーのAVDを作成する

手元の Android 端末(Xperia Z Ultra)は、マルチユーザーに対応していませんので、マルチユーザー環境で adb backup がどの様に動作するかテストできません。

その為、SDK の Android Virtual Devie(AVD)を使い、エミュレータ上にマルチユーザー環境を作成してテストしてみたいと思います。

Android Virtual Device(AVD) Manager を起動し、AVD の作成メニュー上で Device は Tablet を指定しておきます。手元では 10.1"WXGA(Tablet)(1280x800:mdpi) を選択しました。マルチユーザーはタブレット用のもので、一定のサイズ以上でないと使えないようですが、テスト目的ですので素直に Tablet と書いてある項目を選択しています。

作成した AVD を起動し(言語は日本語へ変更)設定 の項目を確認してみると、肝心の「ユーザー」の項目が見当たりません。

少し検索してみると、どうやらデフォルトではユーザー数が 1 に設定されているようで、設定を変更してあげる必要があるようです。

Android:エミュレータでマルチユーザ機能を確認する
http://yuki312.blogspot.jp/2013/02/android.html

上記の内容を参考に、adb shell から下記のコマンドを実行したところ、設定⇒ユーザーが選択できるようになりました。(下記では 4ユーザーを指定しています)

root@generic:/ # setprop fw.max_users 4
setprop fw.max_users 4

後はユーザーを追加すれば、ホーム画面上で Owner 以外のユーザーが選択できるようになります。

エミュレータ上の端末ですので、adb shell から root 権限でアクセスできますので、フォルダ構造の確認などは容易です。マルチユーザーのフォルダ構造については下記URLがとても参考になります。

マルチユーザ対応 Android 4.2以降の内部ストレージと外部ストレージ (4.4対応を追記)

http://techbooster.org/android/application/16004/

 エミュレータには Google Play がありませんので、adb install コマンドで APK ファイルを指定してインストールする事になります。

例えば LINE の APK を adb install コマンドを使いインストールすると、両方のアカウントから LINE アプリケーションが見える状況になります。(個別のユーザーに対してだけ adb install でアプリケーションのインストールを実行するという事はできないようです)

 

Android_ID の確認と LINE のリストア

adb backup でバックアップしたアプリケーション(例えば LINE)のデータを、adb restore で(エミュレータ上の仮想Androidへ)リストアすると、アプリケーションがエラーで起動しなくなります。

この点について、Android_ID が異なる影響を受けるといった情報もありますので、Android_ID について検索した内容をメモしておきたいと思います。

[Android]端末識別子Android_IDを変更する[要ROOT]
http://uchidak.net/change_android_id

上記URLの内容によりますと、data/data/com.android.providers.settings/databases/settings.db ファイル内に Android_ID が定義されているということです。

このファイルへのアクセスには root 権限が必要になるという事で、例えば adb backup -system コマンドでバックアップを作成してたとしても apps\com.android.providers.settings フォルダ配下に settings.db は含まれていません。

エミュレータ上のAndroidのsettings.db を確認してみたところ、secureテーブル内にandroid_id の項目があり、以下のような値が入っている事が確認できました。

"25","android_id","b80a6ca83c6effe6"

これを別の値に切り替えてみました。エミュレータ上のAndroidですので、以下のコマンドで変更されたandroid_id を確認できます。(値は適当です)

root@generic:/ # settings get secure android_id
settings get secure android_id
5cb098378611129e

contentコマンドを使い adb shell content query --uri content://settings/secure でも確認することができますね。(いずれのコマンドも、root権限がなくても実機で同様にandroid_idを確認できます)

Google Playには実機上でこの値を表示してくれるアプリケーションもあるようですね。

 ANDROID_ID

http://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID

 

 さて、android_id を実機と同じに設定した状態(かつ、ネットワークは切断した状態)で、adb backup で作成した LINE のアプリケーションバックアップを、adb restore コマンドからリストアしてみたところ、LINE アプリケーションがクラッシュせずに起動する事ができました。

とはいえ、エミュレータ上の Android にはスタンプのデータなどが無いようで、トークのメッセージは読めますが、スタンプや画像は×マークのアイコン表示となり確認する事はできませんね。

追加で、LINE アプリケーションの機能を使って作成したトーク履歴のバックアップをエミュレータ上の Android にリストアしたところ、バックアップデータ内に含まれていた画像と、恐らく有料ではないスタンプはリストアされ表示できていました。

ここまでのテストで、バックアップデータを実機ではない環境で読むことが可能なことは分かりましたが、実機で読める場合にはもちろんその方が簡単ですね。

 

第4回 Androidにおけるセキュリティ設計と動作(後編)
http://thinkit.co.jp/story/2012/03/09/3467/page/0/2

 

Android で LINE のバックアップをリストアする

adb backup を使えばアプリケーションのバックアップを取ることができ、バックアップしたデータは adb restore コマンドを使うことでリストアできます。

通常はバックアップを取得した実機へバックアップデータをリストアする事になりますが、いま使っている実機環境はそのままにしておき、別の Android 端末へリストアできれば便利ではないでしょうか?

Android SDK には Android Virtul Devicesという機能で仮想的な Android デバイスを作成し、エミュレータとして使う事ができます。この仮想 Android マシンにバックアップデータをリストアできれば、実機はそのままで、別環境上でバックアップデータの内容を読むことができるかもしれないと考えたわけですが、結論から言えばそうは問屋が卸さないという状況です。

adb backup コマンドで一括作成したバックアップファイルは android backup extractor に添付されている adb-split.sh スクリプトを使うことでパッケージ単位に分割できます。

例えば LINE であれば、jp.naver.line.android.ab というファイルに分割してくれますので、このバックアップファイルだけをエミュレータにリストアすれば良いという事になります。

しかし、実際にリストアしてみたところ、LINEの起動段階でエラーになってしまいアプリケーションを起動する事ができません。LINE の APK ファイルを adb install でインストールし、LINE アプリケーションがエミュレータ上で起動する事は確認できるのですが、adb backup で作成したバックアップをリストアするとエラーにより起動できなくなるのです。

少し調べてみたところ、どうやら Android ID という機器に固有の番号?による認証が入っているようで、その情報が一致しないことでアプリケーションがエラーになるようです。

【要root】LINEを丸ごとリストアする方法
http://reindex.hotcom-web.com/archives/252

Titanium BackupでAndroid IDだけを復元する方法
http://androidpeenats.blogspot.jp/2013/05/titanium-backupandroid-id.html

 理論的には、Android ID をバックアップし、それをエミュレータの Andorid へリストすればいけそうに思えますが、そもそも実機側で Android ID をバックアップする必要があります。

Android ID を root なしでバックアップできるのか?という点が未確認ですので、もし root なしでバックアップが可能であり、かつエミュレータにリストアできれば少し進展させる事ができるかもしれませんね。

 

Android で LINE のバックアップを作成する(2)

LINE の標準機能によるトークのバックアップですが、[すべてバックアップ]を使ってバックアップを取ってみたいと思います。

バックアップの選択で[すべてバックアップ]を選択した場合、画面上に以下のようなメッセージが表示されます。

トーク履歴ファイルが”/LINE_Backup/LINE_Android-backup-chat-93391111516.zip”にバックアップされました。メールに送信しますか?

この時にメール送信を選択すると更に下記の注意メッセージが表示されます。

トーク履歴をLINE専用ファイル形式でメール送信します。音声・動画メッセージの一部は再生できない可能性があります。

ここで確認をタップすると、取り扱うアプリケーションの選択画面になりますので、例えば GMAIL などを選択すれば ZIP ファイルを添付ファイルとして送信する事ができます。

さて、手元の Android は 4.4.2 なのですが、バックアップを実行したのち PC に接続して内蔵ストレージにある LINE_Backup フォルダを表示しても肝心のバックアップファイルが見当たりません。

これも Android 4.4 からの制限に引っかかっているものか、アプリケーション側の問題なのかは切り分けできませんが、少なくとも手元ではメール送信などで外部へ送らないとバックアップが出来ないようです。

見えてない可能性を考え、adb backup を -shared オプション付きでバックアップしたところ、adb backup で取得したバックアップファイルのLINE_Backup フォルダ配下には ZIP ファイルが存在していました。

念のため adb shell コマンドで確認してみたところ以下の状況でした。

shell@C6833:/sdcard/LINE_Backup $ ls -l
ls -l
-rw-rw---- root sdcard_r 87804 2014-07-17 12:41 LINE_Android-backup-chat-93391111516.zip

ファイルは存在しているが、MTPモードでのアクセスでは見えないという状況ですのでパーミッションによるものでしょうか?、もしくは手元のOS環境での問題かもしれませんが。

検索してみたところ、デバイスを再起動すると見えるようになるという情報がありましたので、試しにデバイスを再起動してから Windows に接続したところ ZIP ファイルを見ることができました。

Issue 38282: Android MTP support does not show recent files until the device is rebooted
https://code.google.com/p/android/issues/detail?id=38282

また、Facebook のほうで知ったのですが、com.android.providers.media/databases/external.db でファイル情報が管理されていて、この更新が追いついてないと?、不整合が発生するらしいです。

 

 バックアップしたZIPファイルは、LINE 独自の形式で読めないという事のようですが、image フォルダに作成される 47.thumb といったファイルは、中身としては JPEG ヘッダになってますので、拡張子を JPG に変更すれば普通に表示できるようですね。

チャットメッセージのほうはファイル形式が不明ですので、リストアしないと読むのは難しそうです。

 また、バックアップを作成したアカウントでなければリストアする事ができないようですので、その点でも注意が必要でしょうか。

トーク履歴をバックアップ(保存)するには?
http://help.line.me/line/android/categoryId/10000336/pc?lang=ja

[トーク履歴]を消しちゃった!復元できる?相手側も自分とのトーク消える?
http://linenavi.net/use/why_6/

機種変・トラブル対策に!LINEのトーク履歴をバックアップ&復元する方法(Q&A付き)
http://did2memo.net/2013/02/14/naver-line-talk-backup-and-restore/

 

Android で LINE のバックアップを作成する(1)

adb backup でアプリケーションのバックアップを取るのではなく、アプリケーションが個別に持っているバックアップ機能によりバックアップを取ることも出来ます。

例えば LINE であれば、指定したトークルームのメッセージをバックアップする事が出来ます。

トーク履歴をバックアップ(保存)するには?
http://help.line.me/line/android/categoryId/10000336/pc?lang=ja

各トークルーム毎にバックアップを指示する必要がある点がやや面倒ですが、バックアップの種類としては以下の二種類がある事が上記HELPで解説されています。

※[すべてバックアップ]を行うとトークルームでトーク履歴を復元することができます。
※[テキストでバックアップ]を行った場合、画像は保存・復元されません。

普通に考えると、リストア可能な[すべてバックアップ]を選択する事になると思います。

実際に Android 端末上で操作を行うと、バックアップの選択肢として上記 2つのメニューが表示されます。テキストでバックアップが上に表示されていますので先にテキストでバックアップを試してみます。

[テキストでバックアップ]を開始すると、処理が実行され完了するとアプリケーションの選択画面が表示されます。例えば GMAIL を選択すると、トーク内容のテキストファイルをメールに添付して指定アドレス宛に送ることができます。(ちなみにテキストファイルの文字コードは UTF-8 ですが、文字によっては󾭛になるケースもあるようですね)

手元のAndroid 4.4 ではアプリケーションの選択肢として、 SD カードへ保存する項目の表示がありませんでした。この部分は Android のバージョンに依存する項目かもしれません。Android 4.4 からは SD カードへの書き込みが制限されてますので、それ以前のバージョンでは SD カードの項目が表示されたりするかもしれませんが、未確認です。

テキストでバックアップを選択した場合、バックアップされるトークメッセージのテキストは下記のような形になります。(遡れる範囲は端末上に残っているデータに依存)

2014/06/07(土)
18:02 hoge いま新宿これから帰るよー
18:02 fuga [スタンプ]
18:03 fuga [画像]
18:03 hoge お疲れちゃん

スタンプや画像は文字列だけになりますので、実際にどのようなスタンプや画像だったのかはこれでは分からなくなりますね。

Android端末を MTP モードで PC に接続し、内蔵ストレージに自動的に作成されている「LINE_Backup」フォルダを確認してみましたが、テキストでバックアップを行ってもこのフォルダ配下にはデータは残らない状況です。

このため、テキストでバックアップを実行し、作成したテキストデータをどのアプリケーションに行わせるかの選択画面でキャンセルしてしまうとバックアップは何も残ってない状況になりますね。

 

adb backup で Android 端末のバックアップを作成する(14)

adb backup では個別のファイルを指定してバックアップを取ることはできません。adb コマンドには pull コマンドがありますので、個別ファイルは adb pull コマンドを使うことで取得できます。

しかし、コマンドラインから対象ファイルのフルパスを指定する必要があり、あまり使い勝手が良いとは言えない印象が個人的にはあります。*1

 

エクスプローラのような GUI ベースでファイルを閲覧してファイルをコピーできると便利だと思いその様なツールを探してみたところ、これが意外に厄介である事に気が付きました。

まず、SDK のToolsフォルダにある DDMS を呼び出し、File explorer を使う方法があるかと思います。File Exploere を使うと GUI ベースでツリー構造を表示してくれます。アクセス権が無いフォルダ配下にあるファイルは表示されません。Root 権限が無い状況では、かなり限定された範囲でのみアクセス可能です。

DDMS の File Exploere には、ファイルのコピー機能があり、フォルダを指定すれば一括してそのフォルダ配下にあるファイルをWindows 上の指定フォルダ配下にコピーする事が可能です。ただし、問題が一つあり日本語文字列を含むファイル名が対象フォルダ配下に存在すると、そのファイルのコピー時点でコピー処理が中断・終了されてしまいます。

対象フォルダ配下に日本語を含むファイルがなければ、フォルダ構造を維持してコピーする事ができるので便利ですが、途中で終了したのか、正常に全てコピーが終わって終了したのかを判断することが確認できません。(コピー途中に日本語ファイル名があると、そこでコピー操作が終了し特にエラーなどは表示されません)

これは、日本語文字列を含むファイルを個別に指定してコピーを取ろうとした場合にも発生するので、気になる方は簡単に試せるかと思います。コピー先として指定したフォルダに何もファイルが出来ないはずです。

 

また、Facebook のタイムラインで知ったのですが、Windows 上で adb pull コマンドを使い日本語文字列を含むファイルをコピーしようとした場合、ファイル名部分が文字化けするようですね。

Android では UTF-8 でファイル名が管理されているようですが、Windows 側のコンソールを CHCP コマンドで UTF-8(65001)に切り替え、日本語を含むファイル名を正しく表示できたとしても、出力先のファイルシステム側は UTF-16LE ですので、文字コードが一致せずに化けることになるようです。

Googleで少し検索してみたところ、ドイツ語でもウムラウトを含む文字列では問題になるようで似たような話題が出ていました。残念ながらこの部分については解決策を発見する事ができず、UTF-8 でそのまま扱える環境で操作した方が簡単そうです。(adb backup の対象範囲であれば adb backup した方が早い気もしますが)

 

さて、他に GUI ベースで adb コマンドを操作できるツールがないかGoogleで検索してみたところ、QtADB というツールを発見し早速使ってみました、結果としては、残念ながら手元では肝心のファイルリストを表示することが出来ませんでした。

QtADB
http://qtadb.wordpress.com/

今のところ発見できていませんが、文字コードを意識して UTF-8 のファイル名を適切に Windows 上で扱ってくれるツールがあれば、ファイル名が化けずにコピーできるようになるので嬉しいですね。

 

*1:Windowsにデバイスを接続し MTP 経由でアクセス可能なファイルであれば問題ありませんが、それ以外でアクセス可能な範囲にあるファイルの場合には pull コマンドを使う事になりますね。

adb backup で Android 端末のバックアップを作成する(13)

Androidデバイスの内蔵ストレージとSDカードのデータをバックするのに、adb backup -shared オプションを使わずとも、PC に USB ケーブルで MTP(Media Transfer Protocol) モードで接続すれば Windows 上のエクスプローラから簡単にアクセスすることができます。

USBデバイスの接続モードには幾つか種類がありますが、Mass Storage Class で接続すると内蔵ストレージにはアクセスできません。SDカードについて論理ドライブが割り当てられてアクセスできます。

Wikiの記述によると、Android は API Level 12 から MTP がサポートされているようで、手元の 4.4.2 でも(もちろん)MTP での接続が可能です。*1

 

MTPモードで接続した場合、エクスプローラからはアクセス可能になりますが、論理ドライブを割り当てて robocopy などコマンドプロンプト経由でコピーするというのは難しそうです。少し検索してみたところでは、MTPモードで接続したデバイスを論理ドライブにマッピングする方法は発見できませんでした。 

下記 SANS の資料によると、MTP デバイス上のファイルを直接開いた場合、Windows 7 では Temp フォルダ配下に  WPDNSE フォルダが作成され、そこにファイルが一時的に置かれるようですが、手元の Windows 8.1 ではこの資料のような動作になっていませんでした。

USB Devices and Media Transfer Protocol

https://digital-forensics.sans.org/summit-archives/dfir14/USB_Devices_and_Media_Transfer_Protocol_Nicole_Ibrahim.pdf

 例えば PDF を開いた場合には下記フォルダに一時的なファイルが作成されていました。

C:\Users\port139\AppData\Local\Microsoft\Windows\INetCache\IE\PLO0Q839\1401.6444v1[1].pdf

いずれにしても、バックアップを取るという目的の場合には、直接ファイルを開くのではなく、ローカルへコピーを取ってから操作を行う事になるかとは思います。

エクスプローラ経由でファイルをコピーした場合、作成日時はコピーした日時になりますが、ファイルの最終更新日時は元ファイルの日付が維持されてコピーされます。(秒レベルまでの精度で、仮にそれ以下の精度のタイムスタンプ値がコピー元ファイルシステム側にはあったとしても、取ってこないと思いますが)

 

*1:デバイス側でUSBデバッグモードは事前に切っておく必要があります。

adb backup で Android 端末のバックアップを作成する(12)

Content Provider 経由でアクセス可能な標準的なデータのバックアップを取る方法として、アプリケーションをインストールし、アプリケーション経由でデータをコピーする方法も案としてはあります。

HOWTO: Use AFLogical OSE for Logical Forensics of an Android Device
https://santoku-linux.com/howto/howto-use-aflogical-ose-logical-forensics-android

Santoku Linux に含まれている AFLogical OSE は、個別にも APK 形式で提供されているもので、対象デバイスにインストールして使う事が出来、MMS, SMS, Contacts, Call Logs をコピーする事ができます。とはいえ、最終更新が 2011年12月のアプリケーションですので、4.4.2 環境でどこまで使えるのか?という懸念点もありますので、試してみたいと思います。(SDカードへの出力で制限されないの?という素朴な疑問)

AFLogical-OSE_1.5.2.zip — Build v1.5.2 of AFLogical Open Source Edition
https://github.com/viaforensics/android-forensics/downloads

ZIPファイルをダウンロードし、展開すると APK ファイルを確認できます。

adb install コマンドを使ってアプリケーションをインストールします。

>adb install AFLogical-OSE_1.5.2.apk
1974 KB/s (28794 bytes in 0.014s)
pkg: /data/local/tmp/AFLogical-OSE_1.5.2.apk
Success

提供元不明のアプリ、の設定はチェックしていませんがインストールはそのまま可能でした。

アプリケーションの一覧に AFlogical OSE のアイコンが出来ていますので、これをタップして実行します、コピー対象の項目一覧が出ます。デフォルトでCallLog Calls、Contacts Phones、MMS、MMSParts、SMSがチェックされた状態です。

Capture を実行すれば開始され、「Data extraction completed」という表示が出て完了とかなりシンプルな作りです。

データは /sdcard/forensics/フォルダ配下に日時でフォルダが作成され、ファイルが出力されます。

-rw-rw---- root sdcard_r 230 2014-07-10 09:21 CallLog Calls.csv
-rw-rw---- root sdcard_r 338 2014-07-10 09:21 Contacts Phones.csv
-rw-rw---- root sdcard_r 247 2014-07-10 09:21 MMS.csv
-rw-rw---- root sdcard_r 62 2014-07-10 09:21 MMSParts.csv
-rw-rw---- root sdcard_r 758 2014-07-10 09:21 SMS.csv
-rw-rw---- root sdcard_r 255082 2014-07-10 09:21 info.xml

手元の Xperia Ultra Z ではこの forensics フォルダは SD カードではなく、内蔵ストレージに作られていましたので、この辺りは注意が必要なのかもしれません。

 設計の古さによるものかとは思いますが、取得できるデータ範囲もかなり限定的ですので、adb shell content コマンド経由でアクセスする方がよさそうですね。