在网上看了好多微信数据库解密的文章,想要亲动手操作下
微信数据库加密方式:
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
-
可以在代码中实现获取手机IMEI。
-
可以直接查看DENGTA_META.xml文件中的IMEI_DENGTA的值。
/data/data/com.tencent.mm/shared_prefs/DENGTA_META.xml
-
手机直接输入
*#06#
, 如果有多个IMEI,通常取第一个
多账户如何获取
通过搜索知道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权限的,所以你懂得,语音消息也可能被其他软件读取上传.
文章来源:https://liujingyuan.top/2018/09/14/%E5%BE%AE%E4%BF%A1%E6%95%B0%E6%8D%AE%E5%BA%93%E8%A7%A3%E5%AF%86/
文章来源:https://www.52pojie.cn/thread-993445-1-1.html
Q.E.D.