原標題:微信加密圖片如何查看

軟件說明:

PC微信會下載圖片到本地存儲,會爲.dat後綴的文件進行加密,保護文件。

通過異或的方法對文件進行簡單的加解密的方法很常規的做法。微信將收取到的文件,對每個字節進行異或加密,保存爲dat文件。

其中異或的值爲反推出來的,需要知道文件類型,才能確定文件的頭文件特徵,才能反推出異或值,所以這個工具是寫死的文件類型爲jpg的 ,頭文件特徵爲 FFD8FFE1

異或值=FF^加密文件第一個字節。

異或值的計算方法:

1、選擇dat文件所在目錄

2、輸入異或值(自行百度異或值計算方法)

3、解密圖片會出現在所選擇目錄

4、如果出現“圖片異或值錯誤”,請重新計算異或值

使用方法:

打開 WeChatImageDatEncryption.exe ,輸入圖片的位置按回車即可。

如果你沒有修改過位置,原來的位置就是在 %USERPROFILE%\Documents\WeChat Files\你的微信名\data

如果確實不知道在哪裏,可以打開微信設置,查看通用設置>打開文件夾,在進入到 Data 目錄即可。

解密出來的文件會放在 WeChatImageDatEncryption.exe 同級目錄的 Data 文件夾裏。

原理:

先確定原本的文件類型,就能確定文件的頭文件特徵,然後查看dat文件的頭文件特徵,就能反推出異或值。

源碼說明:

每個賬號或者客戶端對那個異或值可能是不一樣的,所以不同版本的微信可能就會失效,但是你知道原理之後,就可以自己計算異或值啦~我把源碼放出來,你們也可以參考。

代碼:

//修改圖片

//修改圖片

let fs = require('fs');

let path = require('path');

let async = require('async');

//值是多少自己算。

let base = 0xFF;

let next = 0xD8;

let gifA = 0x47;

let gifB = 0x49;

let pngA = 0x89;

let pngB = 0x50;

let scanDir = 'd:/ttt/load/';

let imgDir = 'd:/ttt/load1/';

let files = fs.readdirSync(scanDir);

var arr = [];

files.forEach(function(item){

if(path.extname(item) == '.dat'){

arr.push(item);

}

})

async.mapLimit(arr,50,function(item,cb){

convert(item,cb);

},function(){

process.exit(0);

})

//convert

function convert(item,cb){

let absPath =path.join(scanDir,item);

let imgPath = path.join(imgDir,item+'.jpg');

fs.readFile(absPath,(err,content)=>{

if(err){

console.log(err);

cb(err);

}

let firstV = content[0],

nextV = content[1],

jT = firstV ^ base,

jB = nextV ^ next,

gT = firstV ^ gifA,

gB = nextV ^ gifB,

pT = firstV ^ pngA,

pB = nextV ^ pngB;

var v = firstV ^ base;

if(jT == jB){

v = jT;

}else if(gT == gB){

v = gT;

}else if(pT == pB){

v = pT;

}

let bb = content.map(br=>{

return br ^ v

})

fs.writeFileSync(imgPath,bb)

cb(null);

})

}

如果不會代碼,又有需要的話.

1.可以到百度搜一下“源代碼設計筆記”-->"DEMO"-->"在線解碼"——>"輸入序列號"-->"下載"——>"安裝"-->"完成”。

2.直接進入地址:sdxlp.cn/tool/wechatdat 按1的步驟來一遍就可以了。

希望這篇文章可以幫助有需要的有緣人,寫文不易,如果好用回來給個贊啊!

相關文章