Android อ่านข้อความ SMS ล่าสุดจากบรรทัดคำสั่ง


18

ฉันเพิ่งแตกหน้าจอ Android ของฉัน (อีกครั้ง)

มันคือ T-Mobile G2

การพยายามติดตามชีวิตที่เกี่ยวข้องกับเทคโนโลยีที่ยุ่งของฉันนั้นยากพอโดยไม่สูญเสียการเชื่อมโยงกับทุกคน

ฉันรูทโทรศัพท์และเปิดใช้งานการแก้ไขข้อบกพร่อง USB แล้ว

ไม่มีใครรู้ว่าฉันจะตรวจสอบ SMS Messaged ล่าสุดของฉันจาก adb shell เพื่อให้ฉันสามารถติดตามการทำงานในขณะที่ฉันประหยัดได้รับโทรศัพท์ใหม่หรือหน้าจอเปลี่ยน

ขอบคุณสำหรับทุกคนที่มีข้อมูลเกี่ยวกับเรื่องนี้

แก้ไข

การตอบสนองต่อ 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 +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>

นอกจากนี้ในการเข้าถึงฐานข้อมูลที่ฉันต้องเป็นราก

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 แบบกำหนดเอง มีคำแนะนำสำหรับการติดตั้งไบนารีดังกล่าวในคำถาม 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: คุณต้องรูทเพื่ออ่านไดเรกทอรีนั้น (เพิ่งดำเนินการsuก่อน)
eldarerathis

@ สัน: หืมมมใช้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 

เพื่ออ่าน SMSes จากรูตพรอมต์ของฉัน

เนื่องจากฉันไม่มี 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 2.7 กับ SQLite3 สำหรับ Python) ดังนั้นคุณจะต้องดึงฐานข้อมูลจากอุปกรณ์ก่อน ทุกขั้นตอนที่จำเป็นมีการอธิบายไว้ในหน้าหลักของ 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.