版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/a627428179/article/details/95485146

Java批量解析微信dat文件,微信图片破解

  • 前言
  • 关于异或值怎么计算
  • 代码
  • 第二种方式,适合不懂怎么计算,想直接用的代码

前言

偶然看到有可以解密微信dat的文档,上网查了查,找到了一篇可以用的文章,不过转换过程代码是有问题的,在这里改了下发布上来。
附带依赖jdk8的微信图片破解小工具:链接:https://pan.baidu.com/s/1t_e5rMFKmIRDNQAfN5rtaQ
提取码:ymw6

关于异或值怎么计算

首先使用十六进制器打开微信dat文件,显示如下

jpg图片文件头一般为FF D8 开头的,所以此处使用科学计算器,计算异或值


计算后的值

所以此处异或值就是0x9D

代码

以下是java代码,创建一个weChatImgRevert .class后复制进去就好啦。
此处的jdk版本需要1.8以上…,另外三个参数需要改成自己的哦~

package main.java.com.example.demo;

import java.io.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;

public class weChatImgRevert {

<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>String path <span class="token operator">=</span> <span class="token string">"C:\\Users\\Administrator\\Documents\\WeChat Files\\xxx\\FileStorage\\Image\\2019-07"</span><span class="token punctuation">;</span>String targetPath <span class="token operator">=</span> <span class="token string">"D:\\weChat\\2019-07\\"</span><span class="token punctuation">;</span><span class="token keyword">int</span> xor <span class="token operator">=</span> <span class="token number">0xCB</span><span class="token punctuation">;</span><span class="token function">convert</span><span class="token punctuation">(</span>path<span class="token punctuation">,</span> targetPath<span class="token punctuation">,</span> xor<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token comment">/*** @param path       图片地址* @param targetPath 转换后目录*/</span>
<span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">convert</span><span class="token punctuation">(</span>String path<span class="token punctuation">,</span> String targetPath<span class="token punctuation">,</span> <span class="token keyword">int</span> xor<span class="token punctuation">)</span> <span class="token punctuation">{</span>File<span class="token punctuation">[</span><span class="token punctuation">]</span> file <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span>path<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">listFiles</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">if</span> <span class="token punctuation">(</span>file <span class="token operator">==</span> null<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">int</span> size <span class="token operator">=</span> file<span class="token punctuation">.</span>length<span class="token punctuation">;</span>System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"总共"</span> <span class="token operator">+</span> size <span class="token operator">+</span> <span class="token string">"个文件"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>AtomicReference<span class="token generics function"><span class="token punctuation">&lt;</span>Integer<span class="token punctuation">&gt;</span></span> integer <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">AtomicReference</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>Arrays<span class="token punctuation">.</span><span class="token function">stream</span><span class="token punctuation">(</span>file<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">parallel</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span>file1 <span class="token operator">-</span><span class="token operator">&gt;</span> <span class="token punctuation">{</span><span class="token keyword">try</span> <span class="token punctuation">(</span>InputStream reader <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">FileInputStream</span><span class="token punctuation">(</span>file1<span class="token punctuation">)</span><span class="token punctuation">;</span>OutputStream writer <span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">FileOutputStream</span><span class="token punctuation">(</span>targetPath <span class="token operator">+</span> file1<span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"\\."</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token string">".jpg"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">byte</span><span class="token punctuation">[</span><span class="token punctuation">]</span> bytes <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">byte</span><span class="token punctuation">[</span><span class="token number">1024</span> <span class="token operator">*</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> b<span class="token punctuation">;</span><span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>b <span class="token operator">=</span> reader<span class="token punctuation">.</span><span class="token function">read</span><span class="token punctuation">(</span>bytes<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">!=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token comment">//这里的in.read(bytes);就是把输入流中的东西,写入到内存中(bytes)。</span><span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> bytes<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>bytes<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token keyword">byte</span><span class="token punctuation">)</span> <span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">)</span> <span class="token punctuation">(</span>bytes<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">^</span> xor<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">==</span> <span class="token punctuation">(</span>b <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">break</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">}</span>writer<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>bytes<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> b<span class="token punctuation">)</span><span class="token punctuation">;</span>writer<span class="token punctuation">.</span><span class="token function">flush</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span>integer<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>integer<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>file1<span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"(大小:"</span> <span class="token operator">+</span> <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token keyword">double</span><span class="token punctuation">)</span> file1<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">1000</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"kb),进度:"</span> <span class="token operator">+</span> integer<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span><span class="token string">"/"</span> <span class="token operator">+</span> size<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"解析完毕!"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token comment">/*** 获取异或值,不一定准确,当解析不出来的时候,换一张图片的异或值来解析** @param PhotoPath* @return*/</span>
<span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">int</span> <span class="token function">getXor</span><span class="token punctuation">(</span>String PhotoPath<span class="token punctuation">)</span> <span class="token punctuation">{</span>File file <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span>PhotoPath<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">try</span> <span class="token punctuation">(</span>InputStream reader <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">FileInputStream</span><span class="token punctuation">(</span>file<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> xors <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">int</span><span class="token punctuation">[</span><span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">;</span>xors<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">=</span> reader<span class="token punctuation">.</span><span class="token function">read</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">&amp;</span> <span class="token number">0xFF</span> <span class="token operator">^</span> <span class="token number">0xFF</span><span class="token punctuation">;</span>xors<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">=</span> reader<span class="token punctuation">.</span><span class="token function">read</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">&amp;</span> <span class="token number">0xFF</span> <span class="token operator">^</span> <span class="token number">0xD8</span><span class="token punctuation">;</span>reader<span class="token punctuation">.</span><span class="token function">skip</span><span class="token punctuation">(</span>file<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>xors<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">=</span> reader<span class="token punctuation">.</span><span class="token function">read</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">&amp;</span> <span class="token number">0xFF</span> <span class="token operator">^</span> <span class="token number">0xFF</span><span class="token punctuation">;</span>xors<span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span> <span class="token operator">=</span> reader<span class="token punctuation">.</span><span class="token function">read</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">&amp;</span> <span class="token number">0xFF</span> <span class="token operator">^</span> <span class="token number">0xD9</span><span class="token punctuation">;</span>Map<span class="token generics function"><span class="token punctuation">&lt;</span>Integer<span class="token punctuation">,</span> Integer<span class="token punctuation">&gt;</span></span> map <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">HashMap</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> xor <span class="token operator">:</span> xors<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">if</span> <span class="token punctuation">(</span>map<span class="token punctuation">.</span><span class="token function">containsKey</span><span class="token punctuation">(</span>xor<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>map<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span>xor<span class="token punctuation">,</span> map<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>xor<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>map<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span>xor<span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token keyword">return</span> map<span class="token punctuation">.</span><span class="token function">values</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">stream</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">max</span><span class="token punctuation">(</span>Integer<span class="token operator">:</span><span class="token operator">:</span>compareTo<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86

执行main方法后就可以在目标文件夹中去看转换后的图片了
以下是转换后的效果图片:

第二种方式,适合不懂怎么计算,想直接用的代码

以下是java代码,创建一个WxChatImgRevert.class后复制进去就好啦。
此处的jdk版本需要1.8以上…,另外两个参数需要改成自己的哦~
此处的原理是判断图片文件的十六进制特征码。

package main.java.com.example.demo;

import java.io.*;
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 {

<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{</span>String path <span class="token operator">=</span> <span class="token string">"C:\\Users\\Administrator\\Documents\\WeChat Files\\xxx\\FileStorage"</span><span class="token punctuation">;</span>String targetPath <span class="token operator">=</span> <span class="token string">"D:\\weChat\\temp"</span><span class="token punctuation">;</span><span class="token function">convert</span><span class="token punctuation">(</span>path<span class="token punctuation">,</span> targetPath<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token comment">/*** @param path       图片目录地址* @param targetPath 转换后目录*/</span>
<span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">convert</span><span class="token punctuation">(</span>String path<span class="token punctuation">,</span> String targetPath<span class="token punctuation">)</span> <span class="token punctuation">{</span>File<span class="token punctuation">[</span><span class="token punctuation">]</span> file <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span>path<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">listFiles</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">if</span> <span class="token punctuation">(</span>file <span class="token operator">==</span> null<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">int</span> size <span class="token operator">=</span> file<span class="token punctuation">.</span>length<span class="token punctuation">;</span>System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"总共"</span> <span class="token operator">+</span> size <span class="token operator">+</span> <span class="token string">"个文件"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>AtomicReference<span class="token generics function"><span class="token punctuation">&lt;</span>Integer<span class="token punctuation">&gt;</span></span> integer <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">AtomicReference</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>AtomicInteger x <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">AtomicInteger</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">for</span> <span class="token punctuation">(</span>File file1 <span class="token operator">:</span> file<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">if</span> <span class="token punctuation">(</span>file1<span class="token punctuation">.</span><span class="token function">isFile</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>Object<span class="token punctuation">[</span><span class="token punctuation">]</span> xori <span class="token operator">=</span> <span class="token function">getXor</span><span class="token punctuation">(</span>file1<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">if</span> <span class="token punctuation">(</span>xori <span class="token operator">!=</span> null <span class="token operator">&amp;&amp;</span> xori<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">!=</span> null<span class="token punctuation">)</span><span class="token punctuation">{</span>x<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">)</span>xori<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">break</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">}</span>Arrays<span class="token punctuation">.</span><span class="token function">stream</span><span class="token punctuation">(</span>file<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">parallel</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span>file1 <span class="token operator">-</span><span class="token operator">&gt;</span> <span class="token punctuation">{</span><span class="token keyword">if</span> <span class="token punctuation">(</span>file1<span class="token punctuation">.</span><span class="token function">isDirectory</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> newTargetPath <span class="token operator">=</span> file1<span class="token punctuation">.</span><span class="token function">getPath</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"/|\\\\"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>File targetFile <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span>targetPath<span class="token operator">+</span>File<span class="token punctuation">.</span>separator<span class="token operator">+</span>newTargetPath<span class="token punctuation">[</span>newTargetPath<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>targetFile<span class="token punctuation">.</span><span class="token function">exists</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>targetFile<span class="token punctuation">.</span><span class="token function">mkdirs</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token function">convert</span><span class="token punctuation">(</span>file1<span class="token punctuation">.</span><span class="token function">getPath</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>targetPath<span class="token operator">+</span>File<span class="token punctuation">.</span>separator<span class="token operator">+</span>newTargetPath<span class="token punctuation">[</span>newTargetPath<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">return</span><span class="token punctuation">;</span><span class="token punctuation">}</span>Object<span class="token punctuation">[</span><span class="token punctuation">]</span> xor <span class="token operator">=</span> <span class="token function">getXor</span><span class="token punctuation">(</span>file1<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">if</span> <span class="token punctuation">(</span>x<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token number">0</span> <span class="token operator">&amp;&amp;</span> xor<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">!=</span> null <span class="token operator">&amp;&amp;</span> <span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">)</span> xor<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">!=</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>x<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">)</span> xor<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span>xor<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">=</span> xor<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">==</span> null <span class="token operator">?</span> x<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">:</span> xor<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">try</span> <span class="token punctuation">(</span>InputStream reader <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">FileInputStream</span><span class="token punctuation">(</span>file1<span class="token punctuation">)</span><span class="token punctuation">;</span>OutputStream writer <span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">FileOutputStream</span><span class="token punctuation">(</span>targetPath <span class="token operator">+</span> File<span class="token punctuation">.</span>separator <span class="token operator">+</span> file1<span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">"\\."</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token punctuation">(</span>xor<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">!=</span> null <span class="token operator">?</span><span class="token string">"."</span> <span class="token operator">+</span> xor<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">byte</span><span class="token punctuation">[</span><span class="token punctuation">]</span> bytes <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">byte</span><span class="token punctuation">[</span><span class="token number">1024</span> <span class="token operator">*</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span> b<span class="token punctuation">;</span><span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>b <span class="token operator">=</span> reader<span class="token punctuation">.</span><span class="token function">read</span><span class="token punctuation">(</span>bytes<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">!=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token comment">//这里的in.read(bytes);就是把输入流中的东西,写入到内存中(bytes)。</span><span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&lt;</span> bytes<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>bytes<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token keyword">byte</span><span class="token punctuation">)</span> <span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">)</span> <span class="token punctuation">(</span>bytes<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">^</span> <span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">)</span> xor<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">==</span> <span class="token punctuation">(</span>b <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">break</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">}</span>writer<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>bytes<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> b<span class="token punctuation">)</span><span class="token punctuation">;</span>writer<span class="token punctuation">.</span><span class="token function">flush</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span>integer<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>integer<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>file1<span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"(大小:"</span> <span class="token operator">+</span> <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token keyword">double</span><span class="token punctuation">)</span> file1<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token number">1000</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"kb,异或值:"</span> <span class="token operator">+</span> xor<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token string">"),"</span> <span class="token operator">+</span><span class="token string">"进度:"</span> <span class="token operator">+</span> integer<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span><span class="token string">"/"</span> <span class="token operator">+</span> size<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"解析完毕!"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token comment">/*** 判断图片异或值** @param file* @return*/</span>
<span class="token keyword">private</span> <span class="token keyword">static</span> Object<span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token function">getXor</span><span class="token punctuation">(</span>File file<span class="token punctuation">)</span> <span class="token punctuation">{</span>Object<span class="token punctuation">[</span><span class="token punctuation">]</span> xor <span class="token operator">=</span> null<span class="token punctuation">;</span><span class="token keyword">if</span> <span class="token punctuation">(</span>file <span class="token operator">!=</span> null<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">byte</span><span class="token punctuation">[</span><span class="token punctuation">]</span> bytes <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">byte</span><span class="token punctuation">[</span><span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">try</span> <span class="token punctuation">(</span>InputStream reader <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">FileInputStream</span><span class="token punctuation">(</span>file<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>reader<span class="token punctuation">.</span><span class="token function">read</span><span class="token punctuation">(</span>bytes<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> bytes<span class="token punctuation">.</span>length<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span>xor <span class="token operator">=</span> <span class="token function">getXor</span><span class="token punctuation">(</span>bytes<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">return</span> xor<span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token comment">/*** @param bytes* @return*/</span>
<span class="token keyword">private</span> <span class="token keyword">static</span> Object<span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token function">getXor</span><span class="token punctuation">(</span><span class="token keyword">byte</span><span class="token punctuation">[</span><span class="token punctuation">]</span> bytes<span class="token punctuation">)</span> <span class="token punctuation">{</span>Object<span class="token punctuation">[</span><span class="token punctuation">]</span> xorType <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Object</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span> xors <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">int</span><span class="token punctuation">[</span><span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">for</span> <span class="token punctuation">(</span>Map<span class="token punctuation">.</span>Entry<span class="token generics function"><span class="token punctuation">&lt;</span>String<span class="token punctuation">,</span> String<span class="token punctuation">&gt;</span></span> type <span class="token operator">:</span> FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">entrySet</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> hex <span class="token operator">=</span> <span class="token punctuation">{</span>String<span class="token punctuation">.</span><span class="token function">valueOf</span><span class="token punctuation">(</span>type<span class="token punctuation">.</span><span class="token function">getKey</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">charAt</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">+</span> type<span class="token punctuation">.</span><span class="token function">getKey</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">charAt</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">,</span>String<span class="token punctuation">.</span><span class="token function">valueOf</span><span class="token punctuation">(</span>type<span class="token punctuation">.</span><span class="token function">getKey</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">charAt</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">+</span> type<span class="token punctuation">.</span><span class="token function">getKey</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">charAt</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">,</span>String<span class="token punctuation">.</span><span class="token function">valueOf</span><span class="token punctuation">(</span>type<span class="token punctuation">.</span><span class="token function">getKey</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">charAt</span><span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">+</span> type<span class="token punctuation">.</span><span class="token function">getKey</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">charAt</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token punctuation">;</span>xors<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">=</span> bytes<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">&amp;</span> <span class="token number">0xFF</span> <span class="token operator">^</span> Integer<span class="token punctuation">.</span><span class="token function">parseInt</span><span class="token punctuation">(</span>hex<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token number">16</span><span class="token punctuation">)</span><span class="token punctuation">;</span>xors<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">=</span> bytes<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">&amp;</span> <span class="token number">0xFF</span> <span class="token operator">^</span> Integer<span class="token punctuation">.</span><span class="token function">parseInt</span><span class="token punctuation">(</span>hex<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token number">16</span><span class="token punctuation">)</span><span class="token punctuation">;</span>xors<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">=</span> bytes<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">&amp;</span> <span class="token number">0xFF</span> <span class="token operator">^</span> Integer<span class="token punctuation">.</span><span class="token function">parseInt</span><span class="token punctuation">(</span>hex<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token number">16</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">if</span> <span class="token punctuation">(</span>xors<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">==</span> xors<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> xors<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">==</span> xors<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>xorType<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">=</span> type<span class="token punctuation">.</span><span class="token function">getValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>xorType<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">=</span> xors<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">break</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token keyword">return</span> xorType<span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token keyword">private</span> <span class="token keyword">final</span> <span class="token keyword">static</span> Map<span class="token generics function"><span class="token punctuation">&lt;</span>String<span class="token punctuation">,</span> String<span class="token punctuation">&gt;</span></span> FILE_TYPE_MAP <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">HashMap</span><span class="token generics function"><span class="token punctuation">&lt;</span>String<span class="token punctuation">,</span> String<span class="token punctuation">&gt;</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">static</span> <span class="token punctuation">{</span><span class="token function">getAllFileType</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">getAllFileType</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"ffd8ffe000104a464946"</span><span class="token punctuation">,</span> <span class="token string">"jpg"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//JPEG (jpg)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"89504e470d0a1a0a0000"</span><span class="token punctuation">,</span> <span class="token string">"png"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//PNG (png)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"47494638396126026f01"</span><span class="token punctuation">,</span> <span class="token string">"gif"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//GIF (gif)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"49492a00227105008037"</span><span class="token punctuation">,</span> <span class="token string">"tif"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//TIFF (tif)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"424d228c010000000000"</span><span class="token punctuation">,</span> <span class="token string">"bmp"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//16色位图(bmp)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"424d8240090000000000"</span><span class="token punctuation">,</span> <span class="token string">"bmp"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//24位位图(bmp)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"424d8e1b030000000000"</span><span class="token punctuation">,</span> <span class="token string">"bmp"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//256色位图(bmp)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"41433130313500000000"</span><span class="token punctuation">,</span> <span class="token string">"dwg"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//CAD (dwg)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"3c21444f435459504520"</span><span class="token punctuation">,</span> <span class="token string">"html"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//HTML (html)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"3c21646f637479706520"</span><span class="token punctuation">,</span> <span class="token string">"htm"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//HTM (htm)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"48544d4c207b0d0a0942"</span><span class="token punctuation">,</span> <span class="token string">"css"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//css</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"696b2e71623d696b2e71"</span><span class="token punctuation">,</span> <span class="token string">"js"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//js</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"7b5c727466315c616e73"</span><span class="token punctuation">,</span> <span class="token string">"rtf"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Rich Text Format (rtf)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"38425053000100000000"</span><span class="token punctuation">,</span> <span class="token string">"psd"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Photoshop (psd)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"46726f6d3a203d3f6762"</span><span class="token punctuation">,</span> <span class="token string">"eml"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Email [Outlook Express 6] (eml)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"d0cf11e0a1b11ae10000"</span><span class="token punctuation">,</span> <span class="token string">"doc"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//MS Excel 注意:word、msi 和 excel的文件头一样</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"d0cf11e0a1b11ae10000"</span><span class="token punctuation">,</span> <span class="token string">"vsd"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Visio 绘图</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"5374616E64617264204A"</span><span class="token punctuation">,</span> <span class="token string">"mdb"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//MS Access (mdb)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"252150532D41646F6265"</span><span class="token punctuation">,</span> <span class="token string">"ps"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"255044462d312e360d25"</span><span class="token punctuation">,</span> <span class="token string">"pdf"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Adobe Acrobat (pdf)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"2e524d46000000120001"</span><span class="token punctuation">,</span> <span class="token string">"rmvb"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//rmvb/rm相同</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"464c5601050000000900"</span><span class="token punctuation">,</span> <span class="token string">"flv"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//flv与f4v相同</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"00000020667479706973"</span><span class="token punctuation">,</span> <span class="token string">"mp4"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"49443303000000000f76"</span><span class="token punctuation">,</span> <span class="token string">"mp3"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"000001ba210001000180"</span><span class="token punctuation">,</span> <span class="token string">"mpg"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"3026b2758e66cf11a6d9"</span><span class="token punctuation">,</span> <span class="token string">"wmv"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//wmv与asf相同</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"524946464694c9015741"</span><span class="token punctuation">,</span> <span class="token string">"wav"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Wave (wav)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"52494646d07d60074156"</span><span class="token punctuation">,</span> <span class="token string">"avi"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"4d546864000000060001"</span><span class="token punctuation">,</span> <span class="token string">"mid"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//MIDI (mid)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"504b0304140000000800"</span><span class="token punctuation">,</span> <span class="token string">"zip"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"526172211a0700cf9073"</span><span class="token punctuation">,</span> <span class="token string">"rar"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"235468697320636f6e66"</span><span class="token punctuation">,</span> <span class="token string">"ini"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"504b03040a0000000000"</span><span class="token punctuation">,</span> <span class="token string">"jar"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"4d5a9000030000000400"</span><span class="token punctuation">,</span> <span class="token string">"exe"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//可执行文件</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"3c25402070616765206c"</span><span class="token punctuation">,</span> <span class="token string">"jsp"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//jsp文件</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"4d616e69666573742d56"</span><span class="token punctuation">,</span> <span class="token string">"mf"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//MF文件</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"3c3f786d6c2076657273"</span><span class="token punctuation">,</span> <span class="token string">"xml"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//xml文件</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"efbbbf2f2a0d0a53514c"</span><span class="token punctuation">,</span> <span class="token string">"sql"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//xml文件</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"7061636b616765207765"</span><span class="token punctuation">,</span> <span class="token string">"java"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//java文件</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"406563686f206f66660d"</span><span class="token punctuation">,</span> <span class="token string">"bat"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//bat文件</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"1f8b0800000000000000"</span><span class="token punctuation">,</span> <span class="token string">"gz"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//gz文件</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"6c6f67346a2e726f6f74"</span><span class="token punctuation">,</span> <span class="token string">"properties"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//bat文件</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"cafebabe0000002e0041"</span><span class="token punctuation">,</span> <span class="token string">"class"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//bat文件</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"49545346030000006000"</span><span class="token punctuation">,</span> <span class="token string">"chm"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//bat文件</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"04000000010000001300"</span><span class="token punctuation">,</span> <span class="token string">"mxp"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//bat文件</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"504b0304140006000800"</span><span class="token punctuation">,</span> <span class="token string">"docx"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//docx文件</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"d0cf11e0a1b11ae10000"</span><span class="token punctuation">,</span> <span class="token string">"wps"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//WPS文字wps、表格et、演示dps都是一样的</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"6431303a637265617465"</span><span class="token punctuation">,</span> <span class="token string">"torrent"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"494d4b48010100000200"</span><span class="token punctuation">,</span> <span class="token string">"264"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"6D6F6F76"</span><span class="token punctuation">,</span> <span class="token string">"mov"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Quicktime (mov)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"FF575043"</span><span class="token punctuation">,</span> <span class="token string">"wpd"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//WordPerfect (wpd)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"CFAD12FEC5FD746F"</span><span class="token punctuation">,</span> <span class="token string">"dbx"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Outlook Express (dbx)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"2142444E"</span><span class="token punctuation">,</span> <span class="token string">"pst"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Outlook (pst)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"AC9EBD8F"</span><span class="token punctuation">,</span> <span class="token string">"qdf"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Quicken (qdf)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"E3828596"</span><span class="token punctuation">,</span> <span class="token string">"pwl"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Windows Password (pwl)</span>FILE_TYPE_MAP<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"2E7261FD"</span><span class="token punctuation">,</span> <span class="token string">"ram"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Real Audio (ram)</span>
<span class="token punctuation">}</span>

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193

参考文档
[1]: https://blog.csdn.net/weixin_42440768/article/details/88870077
[2]: https://www.jianshu.com/p/782730f7f016

                                </div><link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet"></div>

Java批量解析微信dat文件,微信图片破解相关推荐

  1. 微信缓存dat怎么转图片_微信dat文件转换为图片

    微信dat转码软件使用操作说明在线解码,各位同学下载软件后,如何操作?如何找到dat文件?如何使用?又有哪些注意事项呢?这里会为大家一一道来.问题1 :如果下载失败怎么办?请先检查网络,软件并没有放在 ...

  2. Java批量解析微信dat文件,微信图片

    参考地址:https://blog.csdn.net/a627428179/article/details/95485146 以下是java代码,直接可用,不用手动计算异或值 此处的jdk版本需要1. ...

  3. dat image 微信_微信Dat文件解码

    最近在整理磁盘文件,因为经过一段时间的蹂躏后,磁盘实在是太多东西了,不整理一下,简直对不住我的SSD好嘛.偶然发现磁盘中某公司的文件夹占用空间简直不能再大,那可是我的C盘啊,合计才119GB的SSD空 ...

  4. 微信dat文件批量解密

    废话不多说,上代码 前端页面,为了省事,js都是引用的cdn <!DOCTYPE html> <html lang="en"> <head>&l ...

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

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

  6. 微信dat文件可以删除吗?微信dat如何转换成图片

    如果删除会无法打开聊天记录中图片或视频,如果你不需要这些可以删除. 微信dat文件可以删除.微信dat文件是电脑上微信聊天记录数据文件,可以选择删除,但需要注意,若是文件内有重要的数据(聊天记录.文件 ...

  7. 微信 dat 文件还原

    前言 以微信 PC 端为例 某个小姐姐/小哥哥通过微信发给你的图片会在以下目录以 .dat 后缀的格式出现 C:\Users\taadis\Documents\WeChat Files\taadis\ ...

  8. 如何打开微信dat文件

    第二次更新:中间发现一些图片总是失败,考虑到应该是图片的格式问题,最后兼容了下jpg gif png 这三个格式,基本上能把所有的图片全部转化成功了.(代码已更新) 更新: 先提供一个在线的版本,可以 ...

  9. php 解压dat,电脑微信dat文件怎么打开

    微信dat转码软件使用操作说明在线解码,各位同学下载软件后,如何操作?如何找到dat文件?如何使用?又有哪些注意事项呢?这里会为大家一一道来.问题1 :如果下载失败怎么办?请先检查网络,软件并没有放在 ...

  10. 微信文件夹的dat文件怎么打开_微信dat文件如何打开?

    微信dat转码软件使用操作说明在线解码,各位同学下载软件后,如何操作?如何找到dat文件?如何使用?又有哪些注意事项呢?这里会为大家一一道来.问题1 :如果下载失败怎么办?请先检查网络,软件并没有放在 ...

最新文章

  1. 浏览器刷新再次升级!不同浏览器窗口
  2. 白话SpringCloud | 第八章:分布式配置中心的服务化及动态刷新
  3. Transformer 在美团搜索排序中的实践
  4. C++ 高级数据类型(二)—— 字符序列
  5. 拒绝无脑试错:写给萌新的“科学炼丹”入门手册
  6. OpenVINO 2019 R2.0 Custom Layer Implementation for linux(1)
  7. lisp 河道水面线计算_鹤岗河道用铸铁轻型闸门厂家
  8. Web API 跨域访问
  9. 从IBM SCE+落地中国看IDC的转型
  10. Android 中 liblog 和 libcutils 的编译 trick
  11. Makefile中的ifeq 多条件使用 ***
  12. 关于js中的冒泡事件
  13. MFC对COM接口编写的支持分析
  14. iOS修改手游服务器数据,iOS 教你修改运动步数(基于Healthkit)
  15. 用正割对数计算积分的方法
  16. 加密、签名以及苹果的双重签名机制
  17. 每天努力再多一点,每天坚持再久一点
  18. python随机森林库_随机森林算法入门(python)
  19. linux战争雷霆无法运行,《战争雷霆》Mac版下载及运行问题汇总
  20. 倾斜摄影三维建模软件photoscan教程 [转]

热门文章

  1. 设正整数n的十进制表示为n=ak……a1a0(0=ai=9,0=i=k,ak!=0),n的个位为起始数字的数字的正负交错之和T(n)=a0+a1+……+(-1)kak,证明:11|n的充分必要...
  2. 【生信可视化】ChemDraw基础操作教程
  3. RecSys'22|CARCA:交叉注意力感知上下文和属性进行推荐
  4. vue中使用rrweb实现页面回放功能
  5. 输入一系列整数,建立二叉排序树,并进行前序,中序,后序遍历。
  6. 网站所在服务器查询方法
  7. 深圳一普通中学老师工资单曝光,秒杀程序员
  8. m3u8加密文件原理及下载脚本
  9. 网页在线视频播放大全
  10. grok调试工具使用