最近在整理磁盘文件,因为经过一段时间的蹂躏后,磁盘实在是太多东西了,不整理一下,简直对不住我的SSD好嘛。偶然发现磁盘中某公司的文件夹占用空间简直不能再大,那可是我的C盘啊,合计才119GB的SSD空间,你给我占了差不多10个G,说的就是你Tencent。

但是也不能怪人家,毕竟人家只是负责将数据保存下来方便给我们展示而已。所以,就冒着好奇的心,看看文件夹里面有什么。因为这次的主题说的是Dat文件的解密,我就不扯那么远。 大家假装知道我点完文件夹,看到很多历史图片缓存图片众多*.db就好了哈。(PS:不得不提的是腾讯将近给我缓存了6个G的表情包,未来可以收集这个内容做一个随机表情包网页出来乐呵乐呵呀。咳咳这些都是后话啦)
然后我们便来到了微信PC版的文件夹,找到自己的账号所在文件夹。比如我的是CBR-1997。找到后,如下所示

这个时候,我便猜测,这些dat文件都是什么内容呢?聊天内容?不可能呀,聊天内容这么机密,肯定是放到db里面加密处理的。聊天文件?也不至于有1700+个文件吧。所以,综上,猜测这些个dat文件都是一些聊天时接收到的“表情包”或者“图片”。嗯,平时那些群聊斗图这么凶,估计没错了的。

接下来,尝试直接改后缀试试。不出意外的得到了“图片错误”,我就知道不会这么简单。。。

那接下来怎么办嘛。思来想去,便想着拿16进制编辑器看一下下,里面数据长啥样。打开了多个文件看到里面文件头是8A AD ,但是一般jpg文件的文件头为FF D8 开头的。又记得之前看过说文通过异或对文件进行简单的加解密的很常规的做法。所以,打开计算器。一顿操作猛如虎,哈哈哈,结果一看没错辽,

将计算器调整到程序员模式,然后使用FFD8与8AAD进行异或处理。结果为7575,显然可以知道,这个dat就是微信将收取到的文件对吗,每个字节进行异或0x75进行加密,保存为dat文件。
这个时候,只要用Python写个脚本,不就可以轻松解码了嘛。 来来来,代码写起来。
# -*- coding: utf-8 -*-
# @Time : 3/27/2019 21:54
# @Author : MARX·CBR
# @File : 微信Dat文件转图片.py import os import os out_path=r"D:\\" def imageDecode(f,fn):
dat_read = open(f, "rb")
# out='P:\\'+fn+".png"
out=out_path+fn+".png"
png_write = open(out, "wb")
for now in dat_read:
for nowByte in now:
newByte = nowByte ^ 0x33
png_write.write(bytes([newByte]))
dat_read.close()
png_write.close() def findFile(f):
fsinfo = os.listdir(f)
for fn in fsinfo:
temp_path = os.path.join(f, fn)
if not os.path.isdir(temp_path):
print('文件路径: {}' .format(temp_path))
print(fn)
imageDecode(temp_path,fn)
else:
... # path = r'C:\Users\输入自己微信存储路径\Data'
# findFile(path) # path = r'E:\\'
findFile(path)

  

跑出来的结果如下图,没错吧,以往的表情包,发过收过的图片都出现在了里面。
至此微信dat文件的复原解码到此就完成了。补充一下,每个账号或者客户端对那个异或值都是不一样的,所以,小伙伴们如果需要还原dat文件的话,还是要自己用计算器异或处理一波哦。看看这个值是多少哈。

本文对你有没帮助呀,喜欢的话,记得留言、点赞、转发、收藏哟。谢谢各位!


欢迎扫码关注我的微信公众号:叙之亭

微信Dat文件解码的更多相关文章

  1. 微信DAT文件转JPG图片(图片恢复)

    微信电脑版现在已经是日常工作生活必不可少的工具,有时候删除了聊天记录或者被系统清理软件清理了,但还想查看曾经的微信聊天图片. 这个时候辛辛苦苦找到了文件,却发现无法查看,因为微信电脑版为了保护我们的隐 ...

  2. 微信DAT文件解密(dat转图像)

    微信电脑版现在已经是日常工作生活必不可少的工具,有时候删除了聊天记录或者被系统清理软件清理了,但还想查看曾经的微信聊天图片. 这个时候辛辛苦苦找到了文件,却发现无法查看,因为微信电脑版为了保护我们的隐 ...

  3. 微信电脑版DAT文件转图片工具

    一键批量将微信聊天接受到的加密存储DAT图片文件转化为普通图片. 通过查看转化后的图片,您可以: (1)清理无用的历史图片,节省电脑硬盘存储空间. (2)恢复寻找重要照片资料. 下载地址:点此下载 微 ...

  4. 将.dat文件导入数据库

    *最近在搞文本分类,就是把一批文章分成[军事].[娱乐].[政治]等等. 但是这个先需要一些样本进行训练,感觉文本分类和"按图索骥"差不多,训练的文章样本就是"图&quo ...

  5. 用SQLSERVER里的bcp命令或者bulkinsert命令也可以把dat文件导入数据表

    用SQLSERVER里的bcp命令或者bulkinsert命令也可以把dat文件导入数据表 下面的内容的实验环境我是在SQLSERVER2005上面做的 之前在园子里看到两篇文章<C# 读取纯真 ...

  6. dat文件中如何编写DOS的多行命令

    dat文件中如何编写DOS的多行命令 2012-10-15 11:29 四海柔情108 分享到:   2012-10-16 23:36 提问者采纳   你问的应该是BAT文件吧?BAT是DOS命令的批 ...

  7. FPGA笔记-读取.dat文件

    读取.dat图像文件 .dat文件是matlab生成的图像文件 initial begin // Initialize Inputs CLK = 0; RST = 1; IMAGE_DATA = 0; ...

  8. DAT文件怎样打开

    DAT文件类型主要是"数据"文件.能够是不论什么内容,比方:文字,图形,视频或一般的二进制数据,它并没有统一详细的结构.所以您不能理解它也相应一个用来打开它的应用程序.比方你看到一 ...

  9. FPGA笔记-阅读.dat文件

    阅读.dat图像文件 .dat文件是matlab生成的图像文件 initial begin // Initialize Inputs CLK = 0; RST = 1; IMAGE_DATA = 0; ...

随机推荐

  1. C# DataTable的常用用法讲解

    在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简 ...

  2. 生产者与消费者--demo1---bai

    import java.util.ArrayList; import java.util.List; import java.util.Random; //自定义类,描述仓库 public class ...

  3. SignalR推送服务在Android的实现 SignalA

    SignalA是老外写的用于实现.net端推送消息至安卓端的实现,支持版本为android 2.3或以上,由于我的版本最低是2.2,所以只有把源码下下来自己改,如果你觉得太多了可自己编译成jar引用, ...

  4. 有关Backgroundworker

    (一)Backgroundworker取消时应该用的有关代码: CancelAsync方法是在前台主线程用的,CancellationPending属性是在后台子线程用的.实际的使用方式应该是这样的: ...

  5. 第十七章 Velocity优化实践(待续)

    现实存在的问题 优化的理论基础 一个高效的模版引擎实现思路 优化成果 其他优化手段

  6. 注解:@interface 自定义注解的语法

      自定义注解: 使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节.在定义注解时,不能继承其他的注解或接口 ...

  7. php字符型转整型

    $arr = array(0=>1,"aa"=>2, 3, 4); foreach($arr as $key=>$val){ print($key == &quo ...

  8. bytes,packet区别 字节数据包

    “包”(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”.字节(Byte): 字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位. 字节是计算机信息技术用于计量存储容量和 ...

  9. 问题:C# TrimEnd 去掉最后的逗号;结果: C#中 TrimEnd()用法

    C#中 TrimEnd()用法 ①去除最后的逗号 string str=ab,cd,ef,; str=str.TrimEnd(new char[] { ',' }); 返回结果则是:ab,cd,ef ...

  10. jQuery选择器大全整理

    一.选择网页元素 $(document) //选择整个文档对象 $('#myId') //选择ID为myId的网页元素 $('div.myClass') // 选择class为myClass的div元 ...