diskgenius
硬盘基地 门户 数据恢复 手机 查看内容

安卓手机微信取数据库打开密码的代码

2015-2-2 13:36| 发布者: 蝴蝶| 查看: 28875| 评论: 3|原作者: 330wang数据恢复

摘要: 由于本人已经找到了通用的安卓微信数据库打开方法,所以写下这个打开方法。 话说安卓微信的打开密码由两个部分组成,一个是imei另一个是uin。这个imei好取得,但是uin可不是那么好取得的。 不知大家注意到 ...
由于本人已经找到了通用的安卓微信数据库打开方法,所以写下这个打开方法。           
       话说安卓微信的打开密码由两个部分组成,一个是imei另一个是uin。这个imei好取得,但是uin可不是那么好取得的。
       不知大家注意到没有,在MicroMsg文件夹下有两个cfg文件。一个是systeminfo.cfg另一个是compatibleinfo.cfg。
在这两个文件中,用户的imei和uin以hashmap的方式进行存储。具体什么是hashmap大家百度一下吧。这里我就不多说了。

 下面是对这两个文件取得打开密码的java代码:
//////////////////////////////////////////////////////////////////////////////////////////////////
 package com.ime;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.security.MessageDigest;
import java.util.HashMap;
public class IMEI {
 public static void main(String[] args) {
  try {
   ObjectInputStream in = new ObjectInputStream(new FileInputStream(
     args[0]));
   Object DL = in.readObject();
   HashMap hashWithOutFormat = (HashMap) DL;
   ObjectInputStream in1 = new ObjectInputStream(new FileInputStream(
     args[1]));
   Object DJ = in1.readObject();
   HashMap hashWithOutFormat1 = (HashMap) DJ;
   String s = String.valueOf(hashWithOutFormat1.get(Integer
     .valueOf(258))); // 取手机的IMEI
   s = s + hashWithOutFormat.get(Integer.valueOf(1)); //合并到一个字符串
   s = encode(s); // hash
   System.out.println("The Key is : " + s.substring(0, 7));
   in.close();
   in1.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 public static String encode(String content)
  {
   try {
    MessageDigest digest = MessageDigest.getInstance("MD5");
    digest.update(content.getBytes());
    return getEncode32(digest);
    }
   catch (Exception e)
   {
    e.printStackTrace();
   }
   return null;
  }
  private static String getEncode32(MessageDigest digest)
  {
   StringBuilder builder = new StringBuilder();
   for (byte b : digest.digest())
   {
    builder.append(Integer.toHexString((b >> 4) & 0xf));
    builder.append(Integer.toHexString(b & 0xf));
   }
    return builder.toString();
 
  }
}

///////////////////////////////////////////////////////////////////////////////////////////

编译生成jar后,运行java -jar XXXX.jar systemInfo.cfg CompatibleInfo.cfg
就可以得到加密数据库的打开密码了。
注意: 保证命令行可用java,输入java -version 应该输出当前版本信息,具体JDK安装配置可从网上查一下,安装后将JDK的bin放在环境变量的PATH中即可。

大家看,得到一个数据库的打开密码。但是这个微信登录了三个号,是哪个的呢??
告诉大家,是最后一个登录的微信数据库的打开密码。 

要是有人问我,那我要得到其它的微信数据库打开密码要怎么办??
这个。。。。。。
最笨的方法是每个微信分别登录一下。
1

开心

鄙视
4

鼓掌

愤怒

可怜

刚表态过的朋友 (5 人)

发表评论

最新评论

引用 一剑倾城 2018-12-20 14:59
6666666
引用 启先生 2018-2-2 10:36
报错
imei.java:6: 错误: 类IMEI是公共的, 应在名为 IMEI.java 的文件中声明
public static class IMEI {
              ^
引用 佳佳电子科技 2017-6-18 22:31
看到代码之类的贴子就麻,根本就不懂。

查看全部评论(3)

寻好东西

解决叠瓦SMR硬盘及SSD固态致命缺陷 Zonefs文件系统西数正在开发

解决叠瓦SMR硬盘及SSD固

针对SMR叠瓦式硬盘存在的问题,西数正在用更先进的技术解决,他们开

固态硬盘不认盘了能做数据恢复吗?数据恢复方法

固态硬盘不认盘了能做数

固态硬盘不认盘了能做数据恢复吗?从专业数据恢复层面来讲,当前有一

为什么好多服务器还使用机械硬盘,而不选固态硬盘呢?

为什么好多服务器还使用

如今固态硬盘基本成为了标配,机械硬盘相比固态硬盘在读写速度在存在

返回顶部