|
@@ -0,0 +1,79 @@
|
|
|
+package me.yoqi.wechatdecode;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileInputStream;
|
|
|
+import java.io.FileOutputStream;
|
|
|
+import java.io.InputStream;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
+import java.util.concurrent.Executors;
|
|
|
+
|
|
|
+public class WeChatImgRevert {
|
|
|
+ static String rootPath = "C:/Users/liuyuqi/AppData/Local/Packages/TencentWeChatLimited.forWindows10_sdtnhv12zgd7a/LocalCache/Roaming/Tencent/WeChatAppStore/WeChatAppStore Files/ab3255/Data/";
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ ExecutorService pool = Executors.newFixedThreadPool(10);
|
|
|
+ Runnable r = () -> {
|
|
|
+ String[] fileName = GetFileName.getFileName(rootPath);
|
|
|
+
|
|
|
+ int i = 0;
|
|
|
+ for (String name : fileName) {
|
|
|
+
|
|
|
+ try (InputStream reader = new FileInputStream(rootPath + 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 ^ 56611);// 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|