java批量解析微信dat文件
作者:b_eethoven 发布时间:2022-12-26 01:53:28
标签: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);
//
// }
// }
// }
}
来源:https://blog.csdn.net/weixin_42440768/article/details/88870077
0
投稿
猜你喜欢
- 这篇文章主要介绍了Spring如何使用注解的方式创建bean,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 首先说一下,教科书上的扫描线算法确实是用c++很好实现,而且网上有很多源码,而java实现的基本没有(可能是我没看到),所以肖先生还是打算自
- 文件写入为提供相对较高性能的文件读写操作,这里果断选择了 NIO 对文件的操作,因为业务背景需要数据的安全落盘。这里主要采用 ByteBuf
- 一、面向对象的描述面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的
- Java中字符串中子串的查找共有四种方法(indexof()) indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始
- 本文实例为大家分享了Swing实现可动态刷新的验证码的具体代码,供大家参考,具体内容如下不多,code代码如下:import java.aw
- intellj idea的强大之处就不多说了,相信每个用过它的人都会体会到,但是我们也会被他的复杂搞的晕头转向,尤其刚从eclipse转过来
- cpu是时分(time division)的,操作系统里有很多线程,每个线程的运行时间由cpu决定,cpu会分给每个线程一个时间片,时间片是
- 本文主要是对Handler和消息循环的实现原理进行源码分析,如果不熟悉Handler可以参见博文《详解Android中Handler的使用方
- 这篇文章主要介绍了SpringMVC Mybatis配置多个数据源并切换代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一
- 使用maven引入jar<dependency> <groupId>com.itextpdf</g
- 说到关注功能,可能很多小伙伴要说了。谁不会写但是没有合理的架构,大家写出来的代码很可能是一大堆的复制粘贴。比如十几个页面,都有这个关注按钮。
- 一. 简介 俩个数据库db1,db2, db1数据库的map
- 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。步骤为:1.从数
- 前言《接月饼小游戏》是一个基于java的自制游戏,不要被月亮砸到,尽可能地多接月饼。此小项目可用来巩固JAVA基础语法,swing的技巧用法
- 一、推迟执行动作可以使用timer+map方法实现.代码如下:Observable.timer(5, TimeUnit.MILLISECON
- Tomcat启动报异常java.lang.ClassNotFoundExceptionTomcat启动报异常:java.lang.Class
- 在Java中当try、finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大家众说纷纭,有的说
- 经典排序算法 - 冒泡排序Bubble sort原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或
- 1.继承Thread类,重写run方法2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Threa