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函数学习笔记
Oct 07 Python
Django中模型Model添加JSON类型字段的方法
Jun 17 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
PyQt5每天必学之工具提示功能
Apr 19 Python
基于DataFrame改变列类型的方法
Jul 25 Python
python中退出多层循环的方法
Nov 27 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
如何使用python进行pdf文件分割
Nov 11 Python
python编写微信公众号首图思路详解
Dec 13 Python
tensorflow2.0保存和恢复模型3种方法
Feb 03 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
Feb 09 Python
python如何安装下载后的模块
Jul 03 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 socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
一个基于jquery的文本框记数器
2012/09/19 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
js解析json读取List中的实体对象示例
2014/03/11 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
python实现跨文件全局变量的方法
2014/07/07 Python
python使用三角迭代计算圆周率PI的方法
2015/03/20 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
tensorflow更改变量的值实例
2018/07/30 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
python随机数分布random均匀分布实例
2019/11/27 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
Python爬虫抓取论坛关键字过程解析
2020/10/19 Python
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
政府采购方案
2014/06/12 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
护士2015年终工作总结
2015/04/29 职场文书
手把手教你导入Go语言第三方库
2021/08/04 Golang