Windows下使用ADB读取安卓手机短信
在做一个项目,涉及到验证码部分,需要实现一个简单的接码功能。折腾折腾~
方法总结:通过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 条评论
emm. 请问下日历事件的数据库是哪个?
请问如何知道存储短信的数据库文件路径?
@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侠
我想用python 代码串起来,但是水平有限没有做到,你可以把方法用代码写出来,我学习学习吗
@A KUN
或者有没有其他的方法可以获取手机中的短信验证码信息,思路给我也行