dat文件的打開方式,如何更改dat文件格式

微信已經成為非常重要的社交工具了,但是隨着使用的年限增加,微信會產生大量的文件佔據手機磁盤空間,而且很多文件都是dat格式,不能正常打開。

如何用Python將微信dat文件轉成圖片?支持多種格式

這些文件其實都是聊天時候的圖片,那麼如何可以正常地看到圖片並打開呢?

首先,了解我的微信dat文件到底在哪裡?

一般來說,PC端的微信在安裝的時候都是默認安裝的,自定義安裝的話就只能自己想想自己安裝到哪裡去了。

【C:UsersAdministratorDocumentsWeChat Files】

這個是默認安裝的路徑,找到後進去,裡面就能看到以自己的微信號命名的文件夾。

然後點進去後就是微信pc端的所有數據。

如何用Python將微信dat文件轉成圖片?支持多種格式

其次,再看看如何實現轉換?

1.dat文件路徑 (確保已有路徑,或自己修改)

into_path = r'C:image'  # 微信image.dat文件路徑  

2.輸出圖片路徑

out_path = r"C:imagejpg\"

3.輸入代碼

# weixin_Image.dat 破解
# JPG 16進制 FF D8 FF
# PNG 16進制 89 50 4e 47
# GIF 16進制 47 49 46 38
# 微信.bat 16進制 a1 86----->jpg  ab 8c----jpg     dd 04 --->png
# 自動計算異或 值
import os
into_path = r'C:image'  # 微信image.dat文件路徑   
						#我這把路徑寫死了,運行可執行文件前 先創建這個路徑把dat文件放在這
out_path = r"C:imagejpg\"
"""
    解碼
    param f: 微信圖片路徑
    param fn:微信圖片目錄下的.dat
    return:
"""
def imageDecode(f, fn):
    dat_read = open(f, "rb")  						# 讀取.dat 文件
    xo = Format(f)  								# 判斷圖片格式 並計算返回異或值 
    out = out_path + fn + ".jpg"  					# 圖片輸出路徑
    print("文件輸出路徑{}".format(out), end='nn')
    png_write = open(out, "wb")  					# 圖片寫入
    dat_read.seek(0)  								# 重置文件指針位置

    for now in dat_read:  							# 循環字節
        for nowByte in now:
            newByte = nowByte ^ xo  				# 轉碼計算
            png_write.write(bytes([newByte]))  		# 轉碼後重新寫入

    dat_read.close()
    png_write.close()


def findFile(f):
    """
    尋找文件
    param f:微信圖片路徑
    return:
    """
    fsinfo = os.listdir(f) 		 					# 把路徑文件夾下的文件以列表呈現
    print(fsinfo)
    for fn in fsinfo:  								# 逐步讀取文件
        temp_path = os.path.join(f, fn)  			# 拼接路徑:微信圖片路徑+圖片名
        if os.path.isfile(temp_path):  				# 判斷目錄還是.dat  #temp_path需為絕對路徑,判斷是否為文件,也可 if not os.path.isdir(temp_path):
            print('找到文件路徑{}'.format(temp_path))
            fn = fn[:-4]  							# 截取字符串 去掉後綴.dat
            imageDecode(temp_path, fn)  			# 轉碼函數
        else:
            pass




def Format(f):
    """
    計算異或值
    各圖片頭部信息
    jpeg:ff d8 ff
    png:89 50 4e 47
    gif: 47 49 46 38
        """
    dat_r = open(f, "rb")

    try:
        a = [(0x89, 0x50, 0x4e), (0x47, 0x49, 0x46), (0xff, 0xd8, 0xff)]
        for now in dat_r:
            for xor in a:
                i = 0
                res = []
                nowg = now[:3]						#取前三個 數據信息
                for nowByte in nowg:
                    res.append(nowByte ^ xor[i])	#進行判斷
                    i += 1
                if res[0] == res[1] == res[2]:		#三次異或值想等 說明就是那種格式
                    return res[0]					#返回異或值
    except:
        pass
    finally:
        dat_r.close()


# 運行
if __name__ == '__main__':
    findFile(into_path)

也可以直接使用打包好的exe軟件

注意

dat文件路徑:C:image	  沒有先創建好 將要轉換的微信dat文件 放到此處
圖片輸出路徑:C:imagejpg

轉碼後只要不刪除dat,不選擇刪除源文件,是不會有影響的。軟件會讀取文件,並轉碼後重新生成文件,並與源文件同名。

我們可以根據文件名進行排序或根據類型進行排序,然後對文件進行處理。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/228116.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 21:31
下一篇 2024-12-09 21:31

相關推薦

發表回復

登錄後才能評論