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之再深点,更懂list
Sep 20 Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
Python爬虫爬验证码实现功能详解
Apr 14 Python
Python3实现的字典遍历操作详解
Apr 18 Python
多个应用共存的Django配置方法
May 30 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
Python面向对象基础入门之编码细节与注意事项
Dec 11 Python
python flask解析json数据不完整的解决方法
May 26 Python
浅析python,PyCharm,Anaconda三者之间的关系
Nov 27 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
Dec 23 Python
python shutil文件操作工具使用实例分析
Dec 25 Python
Python LMDB库的使用示例
Feb 14 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 事务处理数据实现代码
2010/05/13 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
python pdb调试方法分享
2014/01/21 Python
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
python Tkinter的图片刷新实例
2019/06/14 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
2020/03/06 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
Python二元算术运算常用方法解析
2020/09/15 Python
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
网络安全方面的面试题
2015/11/04 面试题
远程教育心得体会
2014/01/03 职场文书
跟单文员岗位职责
2014/01/03 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
创先争优公开承诺书
2014/08/30 职场文书
Redis分布式锁的7种实现
2022/04/01 Redis
pandas中pd.groupby()的用法详解
2022/06/16 Python