Android Читайте последние SMS-сообщения из командной строки


18

Я недавно сломал экран моего Android. (Опять таки)

Это T-Mobile G2

Попытка идти в ногу со своей занятой технологией жизнью достаточно трудна, не теряя связи со всеми.

Я рутировал телефон, и USB-отладка уже включена.

Кто-нибудь знает, как я буду проверять свои недавние SMS-сообщения из оболочки adb, чтобы я мог не отставать от работы, пока коплю, чтобы получить новый телефон или экран замены.

Спасибо всем, кто имеет какую-либо информацию об этом.

РЕДАКТИРОВАТЬ

Ответ на эльдерарат

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
# 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>

Большое спасибо eldarerathis

Эта ссылка помогла


Похоже, у вас нет sqlite3двоичного файла на вашем устройстве. Первая ссылка в моем ответе содержит инструкции, которые помогут вам установить его /system/bin. Вот ссылка на сам бинарный файл.
eldarerathis

Ответы:


10

Это действительно ужасно, но вы можете прочитать их из командной строки, используя sqlite3для просмотра записей базы данных. Для этого вам, вероятно, потребуется выкопать бинарный файл, если у вас не установлено специальное ПЗУ. В этом вопросе о переполнении стека есть несколько инструкций по установке указанного двоичного файла , и SuperOneClick поставляется в комплекте с ним (копию самого двоичного файла можно найти здесь ).

Если вам нужно установить двоичный файл, используйте mount(без параметров), чтобы определить, где /systemфизически расположен ваш раздел (например, мой /dev/block/mtdblock3). Затем следуйте инструкциям в первой ссылке выше и начните с перемонтирования в режиме чтения / записи с помощью команды:

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

Как только у вас есть, sqlite3вы захотите открыть adb shell, переключитесь на root с помощью 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: Вы должны быть суперпользователем, чтобы прочитать этот каталог (просто выполните suзаранее).
eldarerathis

@ Джейсон: Хм chmod 0755 sqlite3, тогда пользуйся . Возможно, chmodбинарный файл не любит этот +xпараметр.
eldarerathis

как только я выполню су. он действует так, как будто нет команд

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

Или посмотрите установщик SQLite3 в Google Play (если вы не доверяете источнику Dropbox).


1
URL-адрес dl.dropbox.com для этого двоичного файла не кажется безопасным. Можете ли вы предоставить официальный источник?
pzkpfw

1

Если вам интересна более подробная информация, чем просто отправитель и сообщение (как в этом ответе ), я только что нашел хорошую статью на эту тему: читать SMS напрямую из базы данных Sqlite в Android . Также см .: Структура данных сообщения .

Более того, взгляните на Github: ANDROID-SMS - это инструмент, написанный на Python, который восстанавливает все SMS-сообщения и организует их в SMS-разговоры с предоставленной статистикой. Он также восстанавливает все MMS-сообщения и организует их в MMS-беседы с соответствующими файлами. Я не пробовал это (пока) сам (только нашел это несколько минут назад), но это звучит довольно опрятно.

Конечно, эта программа не работает непосредственно на устройстве Android, а работает на вашем компьютере (где требуется Python 2.7 с SQLite3 для Python). Так что вам нужно будет сначала вытащить базу данных с устройства. Все необходимые шаги описаны на главной странице проекта Github.


0

Другое решение, которое я изобрел, использует приложение на телефоне, которое реагирует на SMS и сохраняет его в файл, который вы можете прочитать с помощью ADB.

  • Установите любое Tasker-подобное приложение, я сделал это с E-Robot
  • Создать новую команду
  • Добавить событие Contact=>SMS
  • Добавить действие Memory=>Write file, там вы можете сохранить SMS в новый файл каждый раз или в тот же с разделителем. В любом случае сохраните его в / sdcard или любой путь, доступный через ADB.
  • Контролируйте этот путь с помощью ADB и читайте содержимое SMS.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.