微信数据库解密

Posted by on September 14, 2018
在网上看了好多微信数据库解密的文章,想要亲动手操作下
  • 微信数据库加密方式:

    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权限的,所以你懂得,语音消息也可能被其他软件读取上传.