在网上看了好多微信数据库解密的文章,想要亲动手操作下
-
微信数据库加密方式:
1.获取手机IMEI码 2.获取当前登录微信账号的uin(存储在sp里面) 3.拼接IMEI和uin 4.将拼接完的字符串进行md5加密 5.截取加完密的字符串的前七位(字母必须为小写) 上面可以看到就两个变量,`uin`和`imei`
-
uin获取
他的位置在
/data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml
里面有个uinz字段,直接可以获取
- imei
手机直接输入*#06#
或者直接代码获取,这样就解决了,然后按照规则解密就行
- 多账户如何获取
通过搜索知道EnMicroMsg.db
的父文件加密规则是 md5(mm + uin)
这样就可以准确的获取到db文件的位置,每个账户的uid历史记录他是存储在app_brand_global_sp.xml.xml
中的
这样思路就有了,直接获取这里的uinset就可以遍历出所有的账户的db文件了。
效果如下:
代码送上直接开使用:https://github.com/l123456789jy/WxDatabaseDecryptKey
-
消息表的type分析,微信消息类型主要分为:
系统消息:1000 文本消息,包含小表情:1 图片消息,相机中的照片和配置有不同,从相册中发送的消息中会保留一个 MMAsset,如同 PAAset:3 位置消息: 48 语音消息:34 名片消息,公众号名片和普通名片用的是同一种类型:42 大表情:47 分享消息,这种消息会含有多种类型,比如分享的收藏,分享的小程序,微信红包等等。这种消息类型可以避免不断添加多种消息类型,像这种预先定义一种消息类型,预留一些字段,这样产品添加消息类型的时候,UI 可以任意组合:49
-
语音消息存储路径分析
通过查看表结构可以得知,语音消息的type=34,字段imagepath字段就代表该语音文件的文件名字,格式为
msg_151806100918b4cf11fefe0106.amr
,存储当前路径的
,改目录以用户的id为规则生成和上面数据库的名字规则一样就可以区分了,里面详细的目录
语音消息需要解除其他软件打开,我用的是楼月微信语音播放器,所以想要备份自己的语音消息,就可以读取这个文件上传了,关键是这个目录是不需要root权限的,所以你懂得,语音消息也可能被其他软件读取上传.