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)行修改。
這里的對(duì) 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)迫癥請(qǐng)忽略圖片不完全一致
發(fā)現(xiàn) PNG 和 JPG圖片格式的文件分別是 “89 50” **“FF D8”**來開頭的。
隨意打開一個(gè)dat文件,同樣是16進(jìn)制格式打開
文件開頭為 “a0 87”,于是電腦計(jì)算器程序員專用走一波~

PNG XOR
JPG XOR
這個(gè)圖片是針對(duì)于JPG來進(jìn)行的一個(gè)XOR加密,并且加密用的16進(jìn)制 5F。因此 xor_value*值填寫0x5f。
到此這篇關(guān)于Python解析微信dat文件的文章就介紹到這了,更多相關(guān)Python微信dat文件內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. asp(vbs)Rs.Open和Conn.Execute的詳解和區(qū)別及&H0001的說明2. CSS hack用法案例詳解3. ASP 處理JSON數(shù)據(jù)的實(shí)現(xiàn)代碼4. PHP設(shè)計(jì)模式中工廠模式深入詳解5. 用css截取字符的幾種方法詳解(css排版隱藏溢出文本)6. asp中response.write("中文")或者js中文亂碼問題7. .NET中l(wèi)ambda表達(dá)式合并問題及解決方法8. ThinkPHP5實(shí)現(xiàn)JWT Token認(rèn)證的過程(親測(cè)可用)9. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向10. ASP.NET MVC遍歷驗(yàn)證ModelState的錯(cuò)誤信息
