微信加密圖片如何查看
原標題:微信加密圖片如何查看
軟件說明:
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的步驟來一遍就可以了。
希望這篇文章可以幫助有需要的有緣人,寫文不易,如果好用回來給個贊啊!