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的Flask框架中@app.route的用法教程
Mar 31 Python
Python中的条件判断语句与循环语句用法小结
Mar 21 Python
python读写json文件的简单实现
Apr 11 Python
Python编程把二叉树打印成多行代码
Jan 04 Python
python实现类之间的方法互相调用
Apr 29 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
使用python实现滑动验证码功能
Aug 05 Python
python的等深分箱实例
Nov 22 Python
python 实现查询Neo4j多节点的多层关系
Dec 23 Python
pandas的相关系数与协方差实例
Dec 27 Python
python 制作网站筛选工具(附源码)
Jan 21 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 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
如何使用PHP获取网络上文件
2006/10/09 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
PHP7内核CGI与FastCGI详解
2019/04/14 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
使用vue.js实现联动效果的示例代码
2017/01/10 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
利用Promise自定义一个GET请求的函数示例代码
2019/03/20 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
从零学Python之入门(四)运算
2014/05/27 Python
python编写网页爬虫脚本并实现APScheduler调度
2014/07/28 Python
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
使用tensorflow实现线性svm
2018/09/07 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
Python内置类型性能分析过程实例
2020/01/29 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
django的autoreload机制实现
2020/06/03 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
戴尔英国官网:Dell英国
2017/05/27 全球购物
企业为何需要商业计划书
2013/12/26 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫