java批量解析微信dat文件
作者:b_eethoven 时间:2022-12-26 01:53:28
本文实例为大家分享了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);
//
// }
// }
// }
}
来源:https://blog.csdn.net/weixin_42440768/article/details/88870077
标签:java,微信,dat文件
0
投稿
猜你喜欢
关于@Scheduled不执行的原因分析
2021-06-27 17:13:20
新手小白看过来学JAVA必过IO流File字节流字符流
2022-09-22 07:42:02
Java如何生成4位、6位随机数短信验证码(高效实现)
2023-01-24 18:05:20
SpringBoot如何动态修改Scheduled(系统启动默认执行,动态修改)
2023-11-29 06:13:27
Java Condition条件变量提高线程通信效率
2022-11-26 13:32:46
pageHelper一对多分页解决方案示例
2022-08-22 19:55:22
C#简单数字图像处理程序
2022-03-07 05:16:31
C# Volatile的具体使用
2023-11-21 11:14:50
Spring事务失效的一种原因关于this调用的问题
2022-07-19 20:59:21
C#连接ODBC数据源的方法
2023-04-20 07:30:33
Java实现企业员工管理系统
2023-08-22 16:44:50
Android列表实现(2)_游标列表案例讲解
2022-11-15 16:49:55
Android 自定义圆形带刻度渐变色的进度条样式实例代码
2023-11-23 13:21:38
C#单例模式与多线程用法介绍
2023-03-25 09:36:07
基于Java字符编码的使用详解
2023-02-26 23:13:01
intellij idea14打包apk文件和查看sha1值
2022-05-25 13:18:37
MyBatis找不到mapper文件的实现
2023-12-15 09:22:11
详解C++中的指针、数组指针与函数指针
2023-04-11 05:35:24
Java中ResultSetMetaData 元数据的具体使用
2021-06-25 12:38:13
c# Selenium爬取数据时防止webdriver封爬虫的方法
2023-06-24 07:50:51