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. js實(shí)現(xiàn)跳一跳小游戲2. IDEA中用maven連接數(shù)據(jù)庫(kù)的教程3. JVM之class文件結(jié)構(gòu)4. js實(shí)現(xiàn)貪吃蛇小游戲(加墻)5. Python中Anaconda3 安裝gdal庫(kù)的方法6. asp.net core 認(rèn)證和授權(quán)實(shí)例詳解7. Python進(jìn)行統(tǒng)計(jì)建模8. python對(duì)批量WAV音頻進(jìn)行等長(zhǎng)分割的方法實(shí)現(xiàn)9. Ajax報(bào)錯(cuò)400的參考解決辦法10. CSS linear-gradient屬性案例詳解
