java批量解析微信dat文件
本文實例為大家分享了java批量解析微信dat文件的具體代碼,供大家參考,具體內(nèi)容如下
微信圖片默認(rèn)路徑: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);就是把輸入流中的東西,寫入到內(nèi)存中(buffer)。 // System.out.println("b = " + b + " b ^ 241 = " + (b ^ 241)); writer.write(b ^ 241);//241這個值是現(xiàn)算的,每個人電腦的值都不一致 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); // // } // } // } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實現(xiàn)海量數(shù)據(jù)高效實時搜索功能
我們都知道隨著業(yè)務(wù)系統(tǒng)的發(fā)展和使用,數(shù)據(jù)庫存儲的業(yè)務(wù)數(shù)據(jù)量會越來越大,逐漸成為了業(yè)務(wù)系統(tǒng)的瓶頸,本文給大家介紹了Spring Boot業(yè)務(wù)系統(tǒng)如何實現(xiàn)海量數(shù)據(jù)高效實時搜索,文中有詳細的代碼示例,需要的朋友可以參考下2023-10-10spring cloud gateway轉(zhuǎn)發(fā)服務(wù)報錯的解決
這篇文章主要介紹了spring cloud gateway轉(zhuǎn)發(fā)服務(wù)報錯的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09Eclipse新建項目不可選擇Java Project問題解決方案
這篇文章主要介紹了Eclipse新建項目不可選擇Java Project問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07java自定義動態(tài)鏈接數(shù)據(jù)庫示例
這篇文章主要介紹了java自定義動態(tài)鏈接數(shù)據(jù)庫示例,需要的朋友可以參考下2014-02-02Java map.getOrDefault()方法的用法詳解
這篇文章主要介紹了Java map.getOrDefault()方法的用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12