java批量解析微信dat文件

 更新时间:2019年08月31日 08:46:18   作者:b_eethoven  
这篇文章主要为大家详细介绍了java批量解析微信dat文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java批量解析微信dat文件的具体代码,供大家参考,具体内容如下

微信图片默认路径:C:\Users\b-eet\Documents\WeChat Files\b-eethoven\FileStorage\Image
微信文件利用Xor加密,计算之前需要知道异或值是多少。(好像每个人电脑上面的异或值都不同,在24行更改异或值)
异或值可用电脑自带的计算机计算(Xor)

package cn.kgw;

import java.io.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class WeChatImgRevert {
 public static void main(String[] args) {

 ExecutorService pool = Executors.newFixedThreadPool(10);

 Runnable r = () -> {
 String[] fileName = GetFileName.getFileName("D:/dat");

 int i = 0;
 for (String name : fileName) {

 try (InputStream reader = new FileInputStream("D:/dat/" + name)) {
  try (OutputStream writer = new FileOutputStream("D:/photo/" + name + ".jpg")) {
  byte[] bytes = new byte[1024];
  int b;
  while ((b = reader.read(bytes)) != -1) {//这里的in.read(bytes);就是把输入流中的东西,写入到内存中(buffer)。
//  System.out.println("b = " + b + " b ^ 241 = " + (b ^ 241));
  writer.write(b ^ 241);//241这个值是现算的,每个人电脑的值都不一致
  writer.flush();
  }
  }
  System.out.println(i++);
 } catch (Exception e) {
  e.printStackTrace();
 }
 }
 };
 pool.submit(r);
 pool.shutdown();
// System.out.println("--------------------------------");
//
// ArrayList<String> listFileName = new ArrayList<String>();
//
// GetFileName.getAllFileName("F:/dat", listFileName);
//
// for (String name : listFileName) {
// System.out.println(name);
// }

 }

}


class GetFileName {

 public static String[] getFileName(String path) {

 File file = new File(path);

 String[] fileName = file.list();

 return fileName;

 }

// public static void getAllFileName(String path, ArrayList<String> fileName) {
//
// File file = new File(path);
//
// File[] files = file.listFiles();
//
// String[] names = file.list();
//
// if (names != null)
//
// fileName.addAll(Arrays.asList(names));
//
// for (File a : files) {
//
// if (a.isDirectory()) {
//
// getAllFileName(a.getAbsolutePath(), fileName);
//
// }
// }
// }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java深入分析动态代理

    Java深入分析动态代理

    动态代理指的是,代理类和目标类的关系在程序运行的时候确定的,客户通过代理类来调用目标对象的方法,是在程序运行时根据需要动态的创建目标类的代理对象。本文将通过案例详细讲解一下Java动态代理的原理及实现,需要的可以参考一下
    2022-07-07
  • Java程序中使用JavaMail发送带图片和附件的邮件

    Java程序中使用JavaMail发送带图片和附件的邮件

    这篇文章主要介绍了Java程序中使用JavaMail发送带图片和附件的邮件,JavaMail是专门用来处理邮件的Java API,需要的朋友可以参考下
    2015-11-11
  • Spring底层原理深入分析

    Spring底层原理深入分析

    Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能
    2022-07-07
  • springboot扩展MVC的方法

    springboot扩展MVC的方法

    今天给大家带来的是关于Java的相关知识,文章围绕着springboot扩展MVC的方法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Spring 中jdbcTemplate 实现执行多条sql语句示例

    Spring 中jdbcTemplate 实现执行多条sql语句示例

    本篇文章主要介绍了Spring 中jdbcTemplate 实现执行多条sql语句示例,可以对多个表执行多个sql语句,有兴趣的可以了解一下。
    2017-01-01
  • Java Web中常用的分页组件(Java端实现)

    Java Web中常用的分页组件(Java端实现)

    本文通过使用场景分析给大家介绍了Java Web中常用的分页组件(Java端实现),非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-05-05
  • java文件重命名(文件批量重命名)实例程序代码分享

    java文件重命名(文件批量重命名)实例程序代码分享

    这篇文章主要介绍了java文件重命名的程序代码,大家参考使用吧
    2013-12-12
  • SpringBoot中Bean生命周期自定义初始化和销毁方法详解

    SpringBoot中Bean生命周期自定义初始化和销毁方法详解

    这篇文章给大家详细介绍了SpringBoot中Bean生命周期自定义初始化和销毁方法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • springboot快速搭建ftpserver服务端的详细步骤

    springboot快速搭建ftpserver服务端的详细步骤

    基于springboot,使用ftpserver快速搭建一个FTP服务端,搭建过程很简单,我们把过程分成4个步骤,一分钟内快速完成构建,感兴趣的朋友跟随小编一起看看吧
    2023-11-11
  • @RequestBody时第二个字母大写,映射不到的解决

    @RequestBody时第二个字母大写,映射不到的解决

    这篇文章主要介绍了@RequestBody时第二个字母大写,映射不到的解决方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07

最新评论