在线还原工具

福利在线微信dat文件还原工具 微信dat在线还原

引言

经常使用电脑端微信聊天的朋友,查看自己的微信安装路径,一般存储路径为C:\Users\weixindata\WeChat Files\微信号\FileStorage\Image 会存在大量的dat格式的文件,没错,那就是你聊天记录中图片数据

你会发现微信的小伙伴们已经将数据进行了加密,明明是自己的图片可是没法看,真是愁坏了少年头,空悲切!
查阅资料发现,dat文件的秘密在于将数据图片(16进制),与特定的数据进行了异或加密,先来聊聊加解密的原理及代码。
微信dat格式文件是将原来的图片文件,以16进制数据读取,然后根据图片格式的不同(如jpg/PNG等等)异或不同单位16进制数值,然后将异或以后的数据保存成dat格式。

码上码上
package com;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;public class WxChatImgRevert2 {/*** @param path       图片目录地址* @param targetPath 转换后目录*/private static void convert(String path, String targetPath) {File[] file = new File(path).listFiles();if (file == null) {return;}int size = file.length;System.out.println("总共" + size + "个文件");AtomicReference<Integer> integer = new AtomicReference<>(0);AtomicInteger x = new AtomicInteger();for (File file1 : file) {if (file1.isFile()) {Object[] xori = getXor(file1);if (xori != null && xori[1] != null){x.set((int)xori[1]);}break;}}Arrays.stream(file).parallel().forEach(file1 -> {if (file1.isDirectory()) {String[] newTargetPath = file1.getPath().split("/|\\\\");File targetFile = new File(targetPath+File.separator+newTargetPath[newTargetPath.length - 1]);if (!targetFile.exists()) {targetFile.mkdirs();}convert(file1.getPath(),targetPath+File.separator+newTargetPath[newTargetPath.length - 1]);return;}Object[] xor = getXor(file1);if (x.get() == 0 && xor[1] != null && (int) xor[1] != 0) {x.set((int) xor[1]);}xor[1] = xor[1] == null ? x.get() : xor[1];try (InputStream reader = new FileInputStream(file1);OutputStream writer =new FileOutputStream(targetPath + File.separator + file1.getName().split("\\.")[0] + (xor[0] != null ?"." + xor[0] : ""))) {byte[] bytes = new byte[1024 * 10];int b;while ((b = reader.read(bytes)) != -1) {//这里的in.read(bytes);就是把输入流中的东西,写入到内存中(bytes)。for (int i = 0; i < bytes.length; i++) {bytes[i] = (byte) (int) (bytes[i] ^ (int) xor[1]);if (i == (b - 1)) {break;}}writer.write(bytes, 0, b);writer.flush();}integer.set(integer.get() + 1);System.out.println(file1.getName() + "(大小:" + ((double) file1.length() / 1000) + "kb,异或值:" + xor[1] + ")," +"进度:" + integer.get() +"/" + size);} catch (Exception e) {e.printStackTrace();}});System.out.println("解析完毕!");}/*** 判断图片异或值** @param file* @return*/private static Object[] getXor(File file) {Object[] xor = null;if (file != null) {byte[] bytes = new byte[4];try (InputStream reader = new FileInputStream(file)) {reader.read(bytes, 0, bytes.length);} catch (Exception e) {e.printStackTrace();}xor = getXor(bytes);}return xor;}/*** @param bytes* @return*/private static Object[] getXor(byte[] bytes) {Object[] xorType = new Object[2];int[] xors = new int[3];for (Map.Entry<String, String> type : FILE_TYPE_MAP.entrySet()) {String[] hex = {String.valueOf(type.getKey().charAt(0)) + type.getKey().charAt(1),String.valueOf(type.getKey().charAt(2)) + type.getKey().charAt(3),String.valueOf(type.getKey().charAt(4)) + type.getKey().charAt(5)};xors[0] = bytes[0] & 0xFF ^ Integer.parseInt(hex[0], 16);xors[1] = bytes[1] & 0xFF ^ Integer.parseInt(hex[1], 16);xors[2] = bytes[2] & 0xFF ^ Integer.parseInt(hex[2], 16);if (xors[0] == xors[1] && xors[1] == xors[2]) {xorType[0] = type.getValue();xorType[1] = xors[0];break;}}return xorType;}private final static Map<String, String> FILE_TYPE_MAP = new HashMap<String, String>();}

代码亲测可用,喜欢动手的小伙伴们码起来。

欢迎关注我的同名博客站 熊猫卓Sunhttps://9035shop.cn

PC端微信dat还原工具源码分享【福利】相关推荐

  1. 【日常】如何将微信中对方所撤回的消息恢复?——电脑PC端微信教程:附源码

    1 前言 寻找微信撤回的图片是不少人一直在寻找的方法 但苦于在网上一直找不到结果 因此本文提出了一种可以找到微信撤回图片的方法. 区别于网上其他的不可用代码,本文能成功恢复! 2 原理 之前的说法是, ...

  2. 检讨书生成微信小程序工具源码-支持流量主

    检讨书生成微信小程序工具源码-支持流量主 源码介绍 源码演示 下载地址 源码介绍 对于经常写检讨的小伙伴来说,福音来了 因为这是一款检讨书生成小程序 所以再也不用为了写检讨而烦恼了哦 支持自定义字数下 ...

  3. 【小程序源码】检讨书生成微信小程序工具源码-安装搭建简单

    对于经常写检讨的小伙伴来说,福音来了 因为这是一款检讨书生成小程序 所以再也不用为了写检讨而烦恼了哦 支持自定义字数下线,主题自定义 支持多种类型检讨比如:学生党的,男朋友,领导演讲稿,共青团申请书等 ...

  4. 检讨书生成微信小程序工具源码-拥有流量主安装搭建简单

    对于经常写检讨的小伙伴来说,福音来了 因为这是一款检讨书生成小程序 所以再也不用为了写检讨而烦恼了哦 支持自定义字数下线,主题自定义 支持多种类型检讨比如:学生党的,男朋友,领导演讲稿,共青团申请书等 ...

  5. 检讨书生成微信小程序工具源码

    文章目录 前言 一.检讨书生成微信小程序工具源码 二.程序演示与下载 1.程序演示 2.程序下载 前言 检讨书作为一种日常应用,是犯了错误的人向当事人或组织写出的检讨错误的书信.在内容写作上,检讨书包 ...

  6. 视频批量去片头片尾小工具源码分享

    视频批量去片头片尾小工具源码分享(基于FFmpeg视频流复制切割,快速无损) 开发环境Delphi2010,框架VGScene(新版本用FMX) 特点:直观的预览界面,秒级的微调定位,批量预设.单个微 ...

  7. 黑科技!C代码轻松搞定微信双开!工具源码原理分析!

    VC++.NET版微信多开神器源代码,可以启动多个微信客户端副本,随便启动几个就算了吧,别多贪,当然你在使用本程序前,你的电脑上需要安装微信电脑版,并确信自动识别的路径正确,点击"启动&qu ...

  8. 批量解码PC端微信dat文件

    微信的dat文件是微信用于缓存PC端微信的图片,然后对图片进行了加密的处理.所以是可以删除的,有些朋友data文件夹下有十几G的,都是可以删除的,但是最好确保这些文件都已经没有用处了再进行删除. 如果 ...

  9. app和web逆向算法还原案例源码分享

    1.前言 后续公众号将不再设置任何收费,只做算法还原源码分享并分享在github项目上 项目地址是:https://github.com/YotaGit/AlgorithmRestore 现已将之前公 ...

最新文章

  1. 经典C语言程序100例之四一
  2. animate中使用HTML5,animate.css怎么使用?
  3. Eclipse扩展点评估变得容易
  4. Sharepoint学习笔记—ECM系列--根据位置设置的默认元数据值(Location-Based Metadata Defaults)...
  5. shell逐行读取文件拼接Sql语句并访问数据库
  6. SpringCloud工作笔记039---spring cloud、javaweb中获取request对象的几种方法
  7. ext4.0.7 样式兼容性
  8. 22.使用非阻塞IO 1
  9. 【Oracle】审计
  10. v-for key的作用
  11. 任何BUG都会被发现
  12. mysql的优化_第十一篇(查询计划篇)
  13. 2022版完整版web前端学习路线图(超详细自学路线)
  14. 2019计算机单招试题,(完整版)2019高职单招计算机类专业练习卷
  15. ACR2010_现实医疗环境下RA缓解率低是否可以用预测因素解释
  16. 阿里云天池大赛赛题(深度学习)——人工智能辅助构建知识图谱(完整代码)
  17. 电源与地之间接电容的原因分析
  18. 逆向分析CrackMe系列——CrackMe004之注册码算法分析
  19. 关于黎曼猜想论文开头部分引用的欧拉公式
  20. EMIS快速开发平台 - 微服务版技术选型

热门文章

  1. 计算机中常用源码,什么是源码
  2. openssl加密解密
  3. android使用Vitamio实现视频播放大小屏流畅切换
  4. 大屏可视化简介(echarts)
  5. Android Studio学习#2
  6. python表求列平均值_python中表列的平均值
  7. android朋友圈发文字换行,朋友圈发文字怎么才显示全文 多按几次换行(大概10次左右...
  8. 使用有道云笔记的三个技巧
  9. ubuntu打开摄像头测试
  10. 基于opencv的倾斜文本行的校正