如何打开微信里的dat文件?
微信的dat 实际上是微信软件将聊天的图片加密后产生的文件。
正常的图片软件无法开,加密方式为异或加密,但是加密值每个人都不同,需要计算。
可以通过在线解码直接查看dat文件。
原理:微信dat文件在微信进行图片存储的时候做了异或加密,然后将后缀修改为了dat格式。由于文件大小没有变化,可以很容易得到异或值,然后我们通过异或值,将文件进行字节码解码,就可以将文件还原成为图片了。
至此,微信dat文件还原成为图片也就结束了。
也可以百度搜索“BUG集散地”点击里面的“DEMO",可以轻松解决这个问题,当然,
有编码能力可以直接看这里,代码:
//修改图片 //修改图片 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); }) }
如果不懂代码,也没关系,还提供了一个在线直接免费解码的服务,可以直接上传dat进行在线解码。
赞 (0)