matlab实现微信dat文件解码

最近在准备CTF,做了一个题,是微信的dat文件,全网找微信dat转码器,不是要钱,就是流氓软件。。。

微信dat文件的原理,是将原文件按字节和一个key值进行异或(XOR)然后以dat格式另存为。
解码的关键是我们要直到这个key值。

我们要知道常见文件头部:

matlab实现微信dat文件解码_ctfshow-misc
下面是一个dat文件。
1.首先用winhex查看头部:
matlab实现微信dat文件解码_CTF_02
发现头部为17CE,我们将 17CE分别与各文件头部进行异或(XOR),得到两个相同的字节证明,key值正确。
2.假设为jpg文件,用jpg头部FFD8和17CE异或:发现结果不是相同字节E8 16,假设错误。
matlab实现微信dat文件解码_安全_03
3.假设为PNG文件,用png头部

下面直接上matlab代码:

dat = fopen('D:\CTF备战-GG\Bugku\Misc\FileStoragedat\keli.dat','rb');
% 需要解码的dat文件

A = fread(dat);% 将dat文件的数据读取出来
A = uint8(A);
B = bitxor(A,uint8(158)); 
% 此处158就是解密字节码的十进制数值,需要更换为自己的解密码

png = fopen('D:\CTF备战-GG\Bugku\Misc\FileStoragedat\Test2.png','wb');
 % 将处理后的数据写入png格式文件,解密成功
 
fwrite(png,B);
fclose(png);
fclose(dat); % 将上述打开的文档关闭掉

matlab实现微信dat文件解码_ctfshow-misc_04

为什么想到用matlab呢?因为刚学完matlab。哈哈