李成笔记网

专注域名、站长SEO知识分享与实战技巧

关于电脑端微信下的dat数据解码 微信电脑图片dat解码

如果大家常用微信办公,很可能会发现微信的文件夹占据着磁盘的大量空间,如果仔细查找的话,还会发现有非常非常之多的dat文件,观察仔细的同学会知道,这些dat文件都是图片,在聊天的时候产生的,但是呢..却无法使用正常的看图软件打开。

今天我给大家主要讲解的是,通过nodejs来讲这些文件解码成为正常的图片,当然,如果想要看懂这篇文章的话,至少要了解nodejs的安装和简单使用。


需要准备如下:

  • nodejs的环境
  • async模块

实现的思路如下:

微信在获取到图片后,会将图片进行异或,而且一般来说,一台电脑的异或值都是相同的,所以,我们可以根据异或来进行计算,只要了解正常的图片数据格式,那么我们就可以根据数据格式来获得异或的值。

代码:

```

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);

})

}

```

由于没有发现头条有markdown的语法,导致代码比较乱,不过思路是明确的,我们只需要根据思路来实现即可。


当然,大部分的同学应该并没有编程基础,所以做了一个比较简单的转码软件,只需要选择对应的文件夹就可以直接进行解码了。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言