Android Прочитайте останні SMS-повідомлення з командного рядка


18

Я нещодавно зламав екран свого Android. (Знову)

Це T-Mobile G2

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

Я вкоренив телефон і USB-налагодження вже увімкнено.

Хтось знає, як я перевірив би моє недавнє SMS-повідомлення з оболонки adb, щоб я міг бути в курсі роботи, поки я заощаджую, щоб отримати новий телефон або екран заміни.

Дякуємо всім, хто має будь-яку інформацію щодо цього.

EDIT

Відповідь на 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
# 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для перегляду записів у базі даних. Можливо, для цього вам потрібно буде викопати двійковий файл, якщо у вас не встановлений спеціальний ROM. У цьому питанні щодо переповнення стека є кілька інструкцій щодо встановлення зазначеного бінарного файлу , і 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: Вам потрібно мати root, щоб прочитати цей каталог ( suзаздалегідь виконати ).
eldarerathis

@Jason: Гм, використовуй 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 (якщо ви не довіряєте джерелу випадок).


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

1

У випадку, якщо вас цікавить більше деталей, ніж просто відправник та повідомлення (як у цій відповіді ), я щойно знайшов приємну статтю на тему: Читайте SMS безпосередньо з бази даних Sqlite в Android . Також див .: Структура даних повідомлень .

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

Звичайно, ця програма не працює безпосередньо на пристрої Android, а замість цього на вашому комп'ютері (де для Python потрібен Python 2.7 із SQLite3). Тому вам потрібно буде спочатку витягнути базу даних з пристрою. Усі необхідні кроки описані на головній сторінці 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.