关闭 More 保存 重做 撤销 预览

   
关闭   当前为简洁模式,您可以更新模块,修改模块属性和数据,要使用完整的拖拽功能,请点击进入高级模式
重播

上一主題 下一主題
»
一蓑烟雨任平生
LV1 初心者
帖子    1
新博币    0 提现
提现    0
     
    7758 2 | 显示全部楼层 |倒序浏览
    前言:在很多工作过程中,看到很多人事莫名其妙的微信被封了,但是想辅助找回或者找到之前里面联系人,但是因为登录不上去,无法查看,身为一个技术,这里我找了一下解决办法了,希望能帮你们工作上面。通过日常使用微信得知,断网的情况下也是能够查看微信聊天记录,所以微信的聊天数据库肯定是存在本地文件的,所以我们只要找到微信存储的数据库位置就能通过数据库查看聊天记录了,但是微信本地数据库肯定是做了加密的,所以只要找到微信数据库的解密方法就能查看数据库了。
    适用范围:手机必须已经获取ROOT权限  手机必须要root  Android(安卓)必须Root  苹果必须越狱!!!如果手机没有root或者刷机,可以百度一下手机root或越狱这里我暂时今天只说Android手机的使用方法

    微信本地数据库的加密规则:
      1.获取手机IMEI码
      2.获取当前登录微信账号的uin(存储在sp里面)
      3.拼接IMEI和uin
      4.将拼接完的字符串进行md5加密
      5.截取加完密的字符串的前七位(字母必须为小写)
    适用范围:手机必须已经获取ROOT权限
    一.确保手机已经在root的情况下,手机上面下载安装 root explorer 文件管理器 各大应用市场都能搜到二.打开手机文件 对应的微信数据库目录 /data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml
    然后点击打开这个文件
    如下图所示








    获取到_auth_uin字段的value值,每个value值不一样,这只是我登录微信的值
    三.通过代码获取数据库的校验密码
    /**
        * 获取手机的imei码
        * @return
        */
        private void initPhoneIMEI() {
            TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
            String  mPhoneIMEI = tm.getDeviceId();
            //1217750550  这个值就是在微信目录的value值 替换自己取到的值
            initDbPassword(mPhoneIMEI,"1217750550");
        }
        /**
        * md5加密
        * @param content
        * @return
        */
        private String md5(String content) {
            MessageDigest md5 = null;
            try {
                md5 = MessageDigest.getInstance("MD5");
                md5.update(content.getBytes("UTF-8"));
                byte[] encryption = md5.digest();//加密
                StringBuffer sb = new StringBuffer();
                for (int i = 0; i < encryption.length; i++) {
                    if (Integer.toHexString(0xff & encryption).length() == 1) {
                        sb.append("0").append(Integer.toHexString(0xff & encryption));
                    } else {
                        sb.append(Integer.toHexString(0xff & encryption));
                    }
                }
                return sb.toString();
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    /**
        * 根据imei和uin生成的md5码,获取数据库的密码(去前七位的小写字母)
        * @param imei
        * @param uin
        * @return
        */
        private void initDbPassword(String imei, String uin) {
            if (TextUtils.isEmpty(imei) || TextUtils.isEmpty(uin)) {
                Log.d(TAG, "初始化数据库密码失败:imei或uid为空");
                return;
            }
            String md5 = md5(imei + uin);
            String password = md5.substring(0, 7).toLowerCase();
            //这里就是自己微信数据库的密码
            Log.d(TAG, "微信数据库密码====="+password);
        }
       四.复制微信数据库到电脑
       微信聊天记录数据库地址   /data/data/com.tencent.mm/MicroMsg/下面找到EnMicroMsg.db发送到电脑




    五.下载sqlcipher图形化数据库
    关于SQLCipher使用方法可以参考其官网https://www.zetetic.net/sqlcipher/sqlcipher-for-android/
    然后使用sqlcipher打开发送到电脑的EnMicroMsg.db文件 ,输入上面代码计算出来微信数据库密码,输入成功然后就可以查看微信数据库数据了









    个人签名

    一蓑烟雨任平生
    LV1 初心者
    帖子    1
    新博币    0 提现
    提现    0
       
      Database Structure里面都是表结构,Browser Data里面则是表里面的数据了。

      常用库介绍:【rcontact】联系人表,【message】聊天消息表 这里只上传了查看联系人图片了,想要查看聊天记录的自己可以试试查询message这张表。
      个人签名

      bbjy
      LV4 路旁的落叶
      帖子    153
      新博币    0 提现
      提现    0
         
        太难哦:(
        个人签名

        V信:HRyaxi   V信:haayax Q:216663823 ,Q:1130726497,全部岗位8小时月休4-8天,24小时水果零食,不压不扣,被辞免赔付!

        点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 淡定 生气 回帖 路过 感动 感恩
        您需要登录后才可以回帖 登录 | 立即注册

        本版积分规则

        快速回复 返回顶部 返回列表