Python解析微信dat文件的方法
今天想查看某個(gè)微信聊天記錄的圖片內(nèi)容,查看文件記錄全部是dat文件,因此,開(kāi)始了一頓百度+操作!
先貼代碼:
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'
# 修改轉(zhuǎn)換成png圖片后的存放路徑
target_path = r'C:\Users\zhang\Desktop\dat_dir\image'
# 修改加密的異或值
xor_value = 0x5f
findFile(dat_path)
接下來(lái)代碼在本地運(yùn)行時(shí),有注釋的地方需要自行進(jìn)行修改。
這里的對(duì) xor_value的具體修改值說(shuō)明:
——————————————————————————
據(jù)說(shuō)微信圖片是用異或值加密?(or轉(zhuǎn)碼?)
——————————————————————————
緊跟步驟
首先,我知道在 ~\WeChat Files 下的文件夾里面 ~\Image 文件夾下dat文件一定是圖片,常用的圖片格式為 PNG 和 JPG!我分別用十六進(jìn)制方式打開(kāi)了一張PNG和JPG的圖片

圖1 PNG16進(jìn)制

圖2 JPG的16進(jìn)制jpg
強(qiáng)迫癥請(qǐng)忽略圖片不完全一致
發(fā)現(xiàn) PNG 和 JPG圖片格式的文件分別是 “89 50” **“FF D8”**來(lái)開(kāi)頭的。
隨意打開(kāi)一個(gè)dat文件,同樣是16進(jìn)制格式打開(kāi)

文件開(kāi)頭為 “a0 87”,于是電腦計(jì)算器程序員專用走一波~

PNG XOR

JPG XOR
這個(gè)圖片是針對(duì)于JPG來(lái)進(jìn)行的一個(gè)XOR加密,并且加密用的16進(jìn)制 5F。因此 xor_value*值填寫0x5f。
到此這篇關(guān)于Python解析微信dat文件的文章就介紹到這了,更多相關(guān)Python微信dat文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)圖片與視頻互轉(zhuǎn)代碼實(shí)戰(zhàn)(親測(cè)有效)
圖片轉(zhuǎn)視頻,視頻轉(zhuǎn)圖片手機(jī)一操作,立馬轉(zhuǎn)換過(guò)來(lái),那么基于代碼是如何操作的呢?下面小編給大家?guī)?lái)了Python實(shí)現(xiàn)圖片與視頻互轉(zhuǎn)代碼實(shí)戰(zhàn),感興趣的朋友跟隨小編一起看看吧2021-12-12
python多進(jìn)程中的內(nèi)存復(fù)制(實(shí)例講解)
下面小編就為大家分享一篇python多進(jìn)程中的內(nèi)存復(fù)制(實(shí)例講解),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
分析Python編程時(shí)利用wxPython來(lái)支持多線程的方法
這篇文章主要介紹了Python編程時(shí)利用wxPython來(lái)支持多線程的方法,本文主要以開(kāi)發(fā)GUI程序時(shí)做線程通訊作為一個(gè)示例來(lái)講解,需要的朋友可以參考下2015-04-04
正確的理解和使用Django信號(hào)(Signals)
這篇文章主要介紹了如何正確的理解和使用Django信號(hào)(Signals),幫助大家更好的理解和學(xué)習(xí)是Django,感興趣的朋友可以了解下2021-04-04
Python設(shè)計(jì)模式之狀態(tài)模式原理與用法詳解
這篇文章主要介紹了Python設(shè)計(jì)模式之狀態(tài)模式原理與用法,簡(jiǎn)單描述了狀態(tài)模式的概念、原理并結(jié)合實(shí)例形式分析了Python實(shí)現(xiàn)與使用狀態(tài)模式的相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5 MDI(多文檔窗口)QMidArea詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5 MDI(多文檔窗口)QMidArea詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03
精心整理總結(jié)的Python自動(dòng)化測(cè)試面試題
簡(jiǎn)單來(lái)說(shuō),自動(dòng)化測(cè)試框架包含了所有的測(cè)試工作所需的測(cè)試框架,下面這篇文章主要給大家介紹了關(guān)于Python自動(dòng)化測(cè)試面試題的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02

