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

圖1 PNG16進(jìn)制

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

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

PNG XOR

JPG XOR
這個(gè)圖片是針對于JPG來進(jìn)行的一個(gè)XOR加密,并且加密用的16進(jìn)制 5F。因此 xor_value*值填寫0x5f。
到此這篇關(guān)于Python解析微信dat文件的文章就介紹到這了,更多相關(guān)Python微信dat文件內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 基于android studio的layout的xml文件的創(chuàng)建方式2. 解決Android studio xml界面無法預(yù)覽問題3. 詳解Android studio 動態(tài)fragment的用法4. Android如何加載Base64編碼格式圖片5. 圖文詳解vue中proto文件的函數(shù)調(diào)用6. Spring Boot和Thymeleaf整合結(jié)合JPA實(shí)現(xiàn)分頁效果(實(shí)例代碼)7. 什么是python的自省8. .Net Core使用Coravel實(shí)現(xiàn)任務(wù)調(diào)度的完整步驟9. Vuex localStorage的具體使用10. Vue封裝一個(gè)TodoList的案例與瀏覽器本地緩存的應(yīng)用實(shí)現(xiàn)

網(wǎng)公網(wǎng)安備