原标题:微信加密图片如何查看

软件说明:

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的步骤来一遍就可以了。

希望这篇文章可以帮助有需要的有缘人,写文不易,如果好用回来给个赞啊!

相关文章