Windows下使用ADB读取安卓手机短信

折腾 2019/07/09

在做一个项目,涉及到验证码部分,需要实现一个简单的接码功能。折腾折腾~

方法总结:通过adb命令将安卓手机的短信数据库复制到电脑端,再读取其数据库

1、准备

一台废弃手机(Andriod 4.4),打开手机的USB调试模式,电脑连接手机

下载 ADB Tookit,解压到任意目录

https://dl.google.com/android/repository/platform-tools_r29.0.5-windows.zip

ADB命令文档:

https://developer.android.com/studio/releases/platform-tools

2.查看设备

adb get-serialno

首次执行时,可能需要在手机端点击允许USB调试,红框即为连接的手机设备号

3.折腾

我手里这台安卓手机短信的存储路径为

/data/data/com.android.providers.telephony/databases/mmssms.db

貌似存储短信的数据库文件路径,在高版本的Andriod系统中进行了转移

一开始想着利用ADB的pull命令可以直接将上述的短信数据库传输到电脑上,如:

adb pull /data/data/com.android.providers.telephony/databases/mmssms.db E:\NextCloud

实际执行的时候却报错

adb: error: remote object '/data/data/com.android.providers.telephony/databases/mmssms.db' does not exist

几番折腾和搜索,才知道想的有些简单,读取/data下的文件需要root权限,如果未获取root权限,执行ls命令:

adb shell ls /data

返回错误:opendir failed, Permission denied

4.复制

先获取root权限,手机端root过程略

adb shell su

再将mmssms.db复制到存储卡(外部存储)

cp /data/data/com.android.providers.telephony/databases/mmssms.db /mnt/sdcard/mmssms.db

退出su,然后再执行adb pull将文件复制到电脑端

adb pull /mnt/sdcard/mmssms.db E:\NextCloud\mmssms.db

5.读取短信数据库

mmssms.db是SQLite数据库文件,可以通过小工具直接读取,我这里用的是SQLiteSpy



7条评论

  • NotMeBug 评论于 回复

    emm. 请问下日历事件的数据库是哪个?

  • Allen 评论于 回复

    请问如何知道存储短信的数据库文件路径?

    • Bug侠 评论于 回复

      @Allen
      安卓短信数据库路径基本都是固定的,比如本文列举的Android 4.4
      /data/data/com.android.providers.telephony/databases/mmssms.db
      到了Android 7,就变成了
      /data/user_de/0/com.android.providers.telephony/databases/mmssms.db
      不排除有些rom修改了这个路径,但大多数rom都是这两个

  • A KUN 评论于 回复

    可以具体一下怎么让上述方法与我写入代码中串起来?

    • Bug侠 评论于 回复

      @A KUN
      呃……方法原理就是这样,这得根据你用什么代码写的程序再串起来 :笑哭:

      • A KUN 评论于 回复

        @Bug侠
        我想用python 代码串起来,但是水平有限没有做到,你可以把方法用代码写出来,我学习学习吗

        • A KUN 评论于 回复

          @A KUN
          或者有没有其他的方法可以获取手机中的短信验证码信息,思路给我也行

    评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)关闭回复