使用python將微信image下.dat文件解密為.png的方法
用清理軟件清理電腦垃圾的時(shí)候,發(fā)現(xiàn)微信存了很多圖片,進(jìn)入路徑一看,全是以.dat為格式的文件:
嘗試了直接把后綴名的.dat 改 .jpg和.png,都打不開,感覺事情沒那么簡(jiǎn)單,隨后立刻度娘了一下,并找到了代碼。下面一步一步的來看一下。
微信客戶端保存的路徑一般是這樣的,相信你能找到。F:UsersTencent FilesWeChat Fileswxid_FileStorageImage2020-11
就可以發(fā)現(xiàn)里面保存了一堆.dat格式的東西,微信保存的這個(gè)格式是16進(jìn)制存儲(chǔ)的,所以需要一個(gè)可以查看16進(jìn)制的軟件,如果你有就更好了,沒有的話推薦一個(gè):微軟出的文本編輯器,官方鏈接:https://www.ultraedit.com/
用它就可以打開我們的.dat文件。打開后就可以看到是這個(gè)樣子的,注意圖中標(biāo)紅的位置,就是這個(gè)文件的開頭部分,你會(huì)發(fā)現(xiàn)你不管打開哪個(gè).dat文件,開頭的四個(gè)數(shù)都是一樣的(你的4個(gè)數(shù)可能和我的不一樣,很正常,就像微信號(hào)一樣,但是你的.dat文件都是以特定的4位數(shù)字開頭)。這四個(gè)數(shù)相當(dāng)于一把解鎖的鑰匙。
我們用能打開16進(jìn)制的軟件打開.jpg時(shí),會(huì)發(fā)現(xiàn).jpg的格式都是以FFD8為開頭的,同樣.png的也是FFD8。
用你的4位數(shù)鑰匙與FFD8做異或運(yùn)算,就能得到你的解鎖密碼:
異或運(yùn)算的結(jié)果是一個(gè)16進(jìn)制的4位數(shù),但是我們只需要最后兩位。所以最終你得到的是一個(gè)16進(jìn)制的兩位數(shù)。記住它,后面要用的。
準(zhǔn)備工作到這里就結(jié)束了,接下來就是代碼,用的python語(yǔ)言。需要你改的地方有三個(gè)(代碼中有相應(yīng)的注釋):兩個(gè)路徑:將.dat的路徑、你要保存解密后文件的路徑都改為你自己的;一個(gè)值:用你自己的密碼(兩位數(shù))代替我的密碼。
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’F:UsersTencent FilesWeChat FileswxidFileStorageImage2020-04’ # 修改轉(zhuǎn)換成png圖片后的存放路徑 target_path = r’F:UsersTencent FilesWeChat Filesimage’ # 修改加密的異或值,比如說我的異或值最后兩位是B2,則xor_value = 0xB2,0x表示16進(jìn)制 xor_value = 0xB2 findFile(dat_path) print('end')
運(yùn)行后,可以看到輸出都是一個(gè)有一個(gè)圖片,直觀明了,就可以保存自己想要的圖片,清理不需要的:
最后,我對(duì)比了一下解密前后的空間占用情況,占用空間的完全相同,不知道為啥騰訊要以.dat文件存儲(chǔ)。
參考:https://www.jb51.net/article/200924.htm
到此這篇關(guān)于使用python將微信image下.dat文件解密為.png的方法的文章就介紹到這了,更多相關(guān)python 微信image .dat文件解密為.png內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 如何對(duì)php程序中的常見漏洞進(jìn)行攻擊2. PHP循環(huán)與分支知識(shí)點(diǎn)梳理3. JSP+Servlet實(shí)現(xiàn)文件上傳到服務(wù)器功能4. ThinkPHP5 通過ajax插入圖片并實(shí)時(shí)顯示(完整代碼)5. JavaWeb Servlet中url-pattern的使用6. Spring MVC+ajax進(jìn)行信息驗(yàn)證的方法7. jsp EL表達(dá)式詳解8. ASP中格式化時(shí)間短日期補(bǔ)0變兩位長(zhǎng)日期的方法9. JSP之表單提交get和post的區(qū)別詳解及實(shí)例10. 利用ajax+php實(shí)現(xiàn)商品價(jià)格計(jì)算
