Python解析微信dat文件的方法


Posted in Python onNovember 30, 2020

今天想查看某个微信聊天记录的图片内容,查看文件记录全部是dat文件,因此,开始了一顿百度+操作!

先贴代码:

import os

def imageDecode(dat_dir,dat_file_name):
  dat_read = open(dat_dir, "rb")
  if not os.path.exists(target_path):
    os.makedirs(target_path)
  out=target_path+"\\"+dat_file_name+".png"
  png_write = open(out, "wb")
  for now in dat_read:
    for nowByte in now:
      newByte = nowByte ^ xor_value
      png_write.write(bytes([newByte]))
  dat_read.close()
  png_write.close()

def findFile(dat_path):
  fsinfo = os.listdir(dat_path)
  for dat_file_name in fsinfo:
    temp_path = os.path.join(dat_path, dat_file_name)
    if not os.path.isdir(temp_path):
      print('文件路径: {}' .format(temp_path))
      imageDecode(temp_path,dat_file_name)
    else:
      pass
            
if __name__=='__main__':

	# 修改dat文件的存放路径
  dat_path = r'C:\Users\zhang\Desktop\dat_dir'
  
  # 修改转换成png图片后的存放路径
  target_path = r'C:\Users\zhang\Desktop\dat_dir\image'
  
  # 修改加密的异或值
  xor_value = 0x5f
  
  findFile(dat_path)

接下来代码在本地运行时,有注释的地方需要自行进行修改。


这里的对 xor_value的具体修改值说明:
——————————————————————————
据说微信图片是用异或值加密?(or转码?)
——————————————————————————
紧跟步骤

首先,我知道在 ~\WeChat Files 下的文件夹里面 ~\Image 文件夹下dat文件一定是图片,常用的图片格式为 PNGJPG!我分别用十六进制方式打开了一张PNG和JPG的图片

Python解析微信dat文件的方法

图1 PNG16进制

Python解析微信dat文件的方法

图2 JPG的16进制jpg

强迫症请忽略图片不完全一致

发现 PNGJPG图片格式的文件分别是 “89 50” **“FF D8”**来开头的。

随意打开一个dat文件,同样是16进制格式打开

Python解析微信dat文件的方法

文件开头为 “a0 87”,于是电脑计算器程序员专用走一波~

Python解析微信dat文件的方法

PNG XOR

Python解析微信dat文件的方法

JPG XOR

这个图片是针对于JPG来进行的一个XOR加密,并且加密用的16进制 5F。因此 xor_value*值填写0x5f

到此这篇关于Python解析微信dat文件的文章就介绍到这了,更多相关Python微信dat文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python基础教程之实现石头剪刀布游戏示例
Feb 11 Python
python实现多线程的方式及多条命令并发执行
Jun 07 Python
tensorflow学习笔记之简单的神经网络训练和测试
Apr 15 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 Python
Python 查看list中是否含有某元素的方法
Jun 27 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
Apr 29 Python
解决Django加载静态资源失败的问题
Jul 28 Python
Python enumerate函数遍历数据对象组合过程解析
Dec 11 Python
使用Keras构造简单的CNN网络实例
Jun 29 Python
python中的被动信息搜集
Apr 29 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 Python
Python应用自动化部署工具Fabric原理及使用解析
Nov 30 #Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 #Python
Python 微信公众号文章爬取的示例代码
Nov 30 #Python
python爬虫工具例举说明
Nov 30 #Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
Nov 29 #Python
运行python提示no module named sklearn的解决方法
Nov 29 #Python
基于python的opencv图像处理实现对斑马线的检测示例
Nov 29 #Python
You might like
理解PHP5中static和const关键字的区别
2007/03/19 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
2016/02/16 PHP
PHP实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
2020/08/13 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
python实现列表的排序方法分享
2019/07/01 Python
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
Pandas分组与排序的实现
2019/07/23 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
Python原始套接字编程实例解析
2020/01/29 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
新闻工作者先进事迹
2014/05/26 职场文书
中学生检讨书范文
2014/11/03 职场文书
法律意见书范文
2015/06/04 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
python中tkinter复选框使用操作
2021/11/11 Python
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python