Androidはコマンドラインから最近のSMSメッセージを読みます


18

最近、Androidの画面が壊れました。(再び)

T-Mobile G2

忙しいテクノロジー関連の生活に遅れを取らないようにすることは、全員とのリンクを失うことなく十分に困難です。

電話をルート化し、USBデバッグを既に有効にしました。

新しい携帯電話や交換用の画面を取得するために保存している間、仕事に追いつくことができるように、誰もがadbシェルから最近のSMSメッセージをチェックする方法を知っていますか?

これに関する情報をお持ちの方に感謝します。

編集

eldarerathisへの応答

C:\android-sdk\platform-tools>adb shell
$ cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
$ sqlite3 mmssms.db
sqlite3 mmssms.db
sqlite3: permission denied
$

ファイルをchmodできません。あなたは実際にそれがどこにあるか知っていますか?

$ chmod +x sqlite3
chmod +x sqlite3
Bad mode
$

suは基本的なコマンドのみを残します

$ su
su
# cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
# sqlite3 mmssms.db
sqlite3 mmssms.db
sqlite3: not found
#

修正済み

sqliteがインストールされていません

C:\android-sdk\platform-tools>adb shell
$ cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
$ sqlite3 mmssms.db
sqlite3 mmssms.db
SQLite version 3.6.22
Enter ".help" for instructions
sqlite>

また、データベースにアクセスするには、rootになる必要がありました。

C:\android-sdk\platform-tools>adb shell
$ su
# cd /data/data/com.android.providers.telephony/databases
cd /data/data/com.android.providers.telephony/databases
# sqlite3 mmssms.db
sqlite3 mmssms.db
SQLite version 3.6.22
Enter ".help" for instructions
sqlite>

どうもありがとう

このリンクは役に立ちました


sqlite3デバイスにバイナリがないようです。私の答えの最初のリンクには、インストールに役立つ指示があります/system/bin。バイナリ自体へのリンクは次のとおりです。
-eldarerathis

回答:


10

これは本当にいですがsqlite3、データベースエントリを表示するためにコマンドラインから読み取ることができます。カスタムROMがインストールされていない限り、おそらくこのためにバイナリを掘り下げる必要があるでしょう。このStack Overflowの質問には、上記のバイナリをインストールするための手順がいくつかあり、SuperOneClickにはパッケージが同梱されています(バイナリ自体のコピーはこちらで確認できます)。

バイナリをインストールする必要がある場合は、mount(パラメータなしで)を使用して、/systemパーティションの物理的な場所を特定します(/dev/block/mtdblock3たとえば、私の場合)。次に、上記の最初のリンクの指示に従い、次のコマンドを使用して読み取り/書き込みモードで再マウントします。

mount -o rw,remount /your/system/partition /system

あなたが持っている一度sqlite3開きたいだろうadb shellとのルートに、スイッチをsuし、次の操作を行います。

# cd /data/data
cd /data/data
# cd com.android.providers.telephony/databases ***
cd com.android.providers.telephony/databases
# sqlite3 mmssms.db
sqlite3 mmssms.db
SQLite version 3.7.2
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> SELECT * FROM sms WHERE read=0;

これにより、すべての未読メッセージのテーブルからすべての行が取得されます。テーブルの列はこのように定義されています(したがって、をトリムできますSELECT)。

CREATE TABLE sms (_id INTEGER PRIMARY KEY,thread_id INTEGER,address TEXT,
  person INTEGER,date INTEGER,protocol INTEGER,read INTEGER DEFAULT 0,
  status INTEGER DEFAULT -1,type INTEGER,reply_path_present INTEGER,
  subject TEXT,body TEXT,service_center TEXT,locked INTEGER DEFAULT 0,
  error_code INTEGER DEFAULT 0,seen INTEGER DEFAULT 0);

***マークされた行に関する注意:これは、お使いのデバイスとAndroidのバージョンによって若干異なる場合がありますcd。このため、このコマンドを個別に含めています。私は考えて、それがために使用com.android.providers/telephony/databases古いデバイスではなく、私はかなり覚えていません。ここを使用lsして適切なパスを探します。


または、.dbファイルをSDカードにコピー(またはを使用してプルadb pull)してから、sqliteを使用してコンピューターで読み取ってみることもできます。


私はこれを試してみましたが、sqlite3のは許可が拒否しているようだ

それは悪いモードを言う

@Jason:そのディレクトリを読むには、rootになる必要があります(su事前に実行するだけです)。
-eldarerathis

@Jason:ええとchmod 0755 sqlite3、それからを使用します。たぶん、ストックchmodバイナリは+xパラメータを気に入らないでしょう。
-eldarerathis

suを実行するとすぐに。コマンドがないように動作します

3

上記のeldarerathisからの美しいヒントのおかげで、私はただ

DB=/data/data/com.android.providers.telephony/databases/mmssms.db
echo 'select address,body from sms;' | ./sqlite3 -csv $DB 

ルートプロンプトからSMSを読む。

私はsqlite3を持っていなかったので、最初にそれをダウンロードしなければなりませんでした

curl http://dl.dropbox.com/u/16958605/sqlite3
chmod a+x sqlite3

または、Google PlayのSQLite3インストーラーを参照してください(Dropboxのソースを信頼できない場合)。


1
そのバイナリのdl.dropbox.com URLは安全ではありません。公式ソースを提供できますか?
pzkpfw

1

この回答のように)送信者とメッセージだけでなく詳細に興味がある場合は、AndroidのSqliteデータベースから直接SMSを読むというトピックに関する素晴らしい記事を見つけました。参照してください:メッセージデータ構造を

さらに良いことに、Githubをご覧ください。ANDROID-SMSは、すべてのSMSメッセージ回復し、提供された統計情報を使用してSMS会話に整理する Pythonで書かれたツールですまた、すべてのMMSメッセージを回復し、それぞれのファイルとともにMMS会話に整理します。私は(まだ)自分で試したことはありませんが(数分前に見つけました)、かなりきれいに聞こえます。

もちろん、このプログラムはAndroidデバイスでは直接動作しませんが、代わりにコンピューター上で動作します(Python用のSQLite3を搭載したPython 2.7が必要です)。そのため、最初にデバイスからデータベースをプルする必要があります。必要なすべての手順は、プロジェクトのGithubメインページで説明されています。


0

私が発明した別のソリューションは、SMSに反応してADBで読み取れるファイルに保存する電話のアプリを利用します。

  • Taskerのようなアプリをインストールします。E-Robotで作成しました
  • 新しいコマンドを作成
  • イベントを追加 Contact=>SMS
  • アクションを追加Memory=>Write fileすると、毎回またはセパレーターを使用して同じファイルにSMSを保存できます。とにかく/ sdcardまたはADB経由でアクセス可能なパスに保存してください。
  • ADBでそのパスを監視し、SMSコンテンツを読み取ります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.