您现在的位置: Tracy‘Blog > 博客 > 黑人黑事 > 正文
微信数据库密码——Java实现

        这还真是第一次写java程序。其实,一直是对java有偏见的。无奈,从BlackFeather那里知道了微信数据库加密方法,以及密码的获取方式。

        发现是基于hashmap的,本来吧,还是想用C或者其他语言来实现对hashmap的读取,可后来都失败了。要么就是太复杂了。于是,还是硬着头皮去把jdk装好,然后~~~开始各种百度。

        先用反编译出来的代码搭了个大体的轮廓。然后,自己各种加代码(考虑到一些问题,还是只贴出一些关键代码吧):

        加密方式是:hash(imei&uin).substring(0,7)

 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();
  }
}

 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(); 
 } 

 

        结果如下:

 

        总结下吧:

       1、 其实和python也有很多相似的地方,比如方法的使用,类的使用,大概接受了这写概念,于是,也没那么难了。

       2、 知道了java实现md5算法的一些方法,16位、32位结果。

       3、 java中强制类型转换、字符串连接、字符串截取等操作

       4、 搭建好了notepad++的java开发环境

       5、 知道了manifest的作用,也学会了用jar cvfm xxx.jar manifest xxx.class 打包制作可执行jar文件。

       6、 加强了和同学们的沟通(也感谢各位的无私帮助)

       7、 把功能实现了!

发表评论(0)
姓名 *
电子邮件
QQ
评论内容 *
验证码 *图片看不清?点击重新得到验证码请输入图片后链接字符‘a’