Android Đọc tin nhắn SMS gần đây từ dòng lệnh


18

Gần đây tôi đã phá vỡ màn hình Android của tôi. (Lần nữa)

Đó là một chiếc T-Mobile G2

Cố gắng theo kịp cuộc sống bận rộn liên quan đến công nghệ của tôi là đủ khó mà không mất liên kết với mọi người.

Tôi đã root điện thoại và đã bật USB Debugging.

Có ai biết tôi sẽ kiểm tra SMS gần đây của tôi như thế nào từ vỏ adb để tôi có thể theo kịp công việc trong khi tôi tiết kiệm để lấy điện thoại mới hoặc màn hình thay thế.

Cảm ơn cho bất cứ ai có bất kỳ thông tin liên quan đến điều này.

CHỈNH SỬA

Đáp ứng với 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
$

Không thể chmod các tập tin. Bạn có biết thực sự nó ở đâu không?

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

su để lại cho tôi chỉ với các lệnh cơ bản

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

Đã sửa

sqlite chưa được cài đặt

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>

Ngoài ra để truy cập cơ sở dữ liệu tôi cần phải 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>

Cảm ơn rất nhiều eldarerathis

Liên kết này đã giúp


Có vẻ như bạn không có sqlite3tệp nhị phân trên thiết bị của mình. Liên kết đầu tiên trong câu trả lời của tôi có hướng dẫn để giúp bạn cài đặt nó /system/bin. Đây là một liên kết đến chính nhị phân.
eldarerathis

Câu trả lời:


10

Điều này thực sự xấu, nhưng bạn có thể đọc chúng từ dòng lệnh bằng cách sử dụng sqlite3để xem các mục cơ sở dữ liệu. Có lẽ bạn sẽ cần phải khai thác nhị phân cho việc này trừ khi bạn đã cài đặt ROM tùy chỉnh. Có một số hướng dẫn để cài đặt nhị phân đã nói trong câu hỏi Stack Overflow nàySuperOneClick được đóng gói cùng với nó (bản sao của chính nhị phân có thể được tìm thấy ở đây ).

Nếu bạn cần cài đặt nhị phân, hãy sử dụng mount(không có tham số) để xác định vị trí /systemphân vùng của bạn ( /dev/block/mtdblock3ví dụ như của tôi). Sau đó làm theo các hướng dẫn trong liên kết đầu tiên ở trên và bắt đầu bằng cách lặp lại nó trong chế độ đọc / ghi bằng lệnh:

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

Khi bạn sqlite3muốn mở adb shell, hãy chuyển sang root suvà sau đó thực hiện các thao tác sau:

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

Điều này sẽ kéo lên tất cả các hàng từ bảng cho tất cả các tin nhắn chưa đọc. Các cột trong bảng được xác định như vậy (vì vậy bạn có thể cắt 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);

*** Lưu ý cho dòng được đánh dấu: điều này có thể hơi khác tùy thuộc vào thiết bị và phiên bản Android của bạn, đó là lý do tại sao tôi đã bao gồm cdlệnh này một cách riêng biệt. Tôi nghĩ nó đã từng có com.android.providers/telephony/databasestrên các thiết bị cũ hơn nhưng tôi không nhớ lắm. Sử dụng lsđể tìm xung quanh cho các đường dẫn thích hợp ở đây.


Ngoài ra, bạn có thể thử sao chép tệp .db vào thẻ SD của mình (hoặc kéo tệp đó adb pull) và sau đó đọc nó trên máy tính của bạn bằng sqlite.


Tôi đã thử điều này và dường như sqlite3 đã bị từ chối

Nó nói chế độ xấu

@Jason: Bạn cần root để đọc thư mục đó (chỉ cần thực hiện sutrước).
eldarerathis

@Jason: Hừm, dùng chmod 0755 sqlite3rồi. Có thể chmodnhị phân chứng khoán không thích +xtham số.
eldarerathis

ngay khi tôi thi hành su. nó hoạt động như không có lệnh

3

Nhờ những gợi ý đẹp ở trên từ eldarerathis, tôi mới làm được

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

để đọc tin nhắn SMS của tôi từ dấu nhắc gốc của tôi.

Vì tôi không có sqlite3, trước tiên tôi phải tải xuống bằng

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

Hoặc xem trình cài đặt SQLite3 trên Google Play (nếu bạn không tin tưởng nguồn dropbox).


1
URL dl.dropbox.com cho nhị phân đó không cảm thấy an toàn. Bạn có thể cung cấp một nguồn chính thức?
pzkpfw

1

Trong trường hợp bạn quan tâm đến nhiều chi tiết hơn chỉ là người gửi và tin nhắn (như trong câu trả lời này ), tôi vừa tìm thấy một bài viết hay về chủ đề: Đọc SMS trực tiếp từ cơ sở dữ liệu Sqlite trong Android . Xem thêm: Cấu trúc dữ liệu tin nhắn .

Thậm chí tốt hơn, hãy xem Github: ANDROID-SMS là một công cụ được viết bằng Python, phục hồi tất cả các tin nhắn SMS và sắp xếp chúng thành các Cuộc trò chuyện SMS với số liệu thống kê được cung cấp. cũng phục hồi tất cả các tin nhắn MMS và sắp xếp chúng thành Cuộc trò chuyện MMS, với các tệp tương ứng. Tôi đã không thử nó (chưa) bản thân mình (chỉ tìm thấy nó một vài phút trước đây), nhưng nó có vẻ khá gọn gàng.

Tất nhiên, chương trình này không hoạt động trực tiếp trên thiết bị Android - mà thay vào đó trên máy tính của bạn (nơi yêu cầu Python 2.7 với SQLite3 cho Python). Vì vậy, trước tiên bạn sẽ cần phải kéo cơ sở dữ liệu từ thiết bị. Tất cả các bước cần thiết được mô tả trên trang chính Github của dự án.


0

Một giải pháp khác mà tôi đã phát minh sử dụng một ứng dụng trên điện thoại phản ứng trên SMS và lưu nó vào một tệp mà bạn có thể đọc với ADB.

  • Cài đặt bất kỳ ứng dụng nào giống như Tasker, tôi đã tạo nó bằng E-Robot
  • Tạo lệnh mới
  • Thêm sự kiện Contact=>SMS
  • Thêm hành động Memory=>Write file, ở đó bạn có thể lưu SMS vào một tệp mới mỗi lần hoặc vào cùng một tệp có dấu phân cách. Dù sao, hãy lưu nó vào / sdcard hoặc bất kỳ đường dẫn nào có thể truy cập qua ADB.
  • Theo dõi đường dẫn đó với ADB và đọc nội dung SMS.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.