簡體   English   中英

如何使用 Python 將 .dat 文件的內容轉換為人類可讀的形式?

[英]How to convert the content of a .dat file to a human readable form using Python?

有一個名為“settings.dat”的文件,我想閱讀和編輯它。 通過記事本打開這個文件時,我得到了一個不可讀的編碼。

我想這可能是一個二進制文件。 據我所知,編碼可能是 UTF-16。 這是我嘗試轉換它的方式:

with open('settings.dat', 'rb') as binary_file:
    raw_data = binary_file.read()
    str_data = raw_data.decode('utf-16', 'ignore')
    print(str_data)

輸出又是一種不可讀的形式,帶有看起來像中文的字符。 這不應該是一個簡單的字節到字符串轉換問題嗎? 這是輸出:

䕗䙃h 3 Ԁ ː ᙫ ␐☐ᜐ┐Ⱀ⨐ᴐሐ⼐【ㄐ㈐䠐倐䬐䴐ᄐἐḐ‐점퀐쬐촐

.dat文件是通用的文件,可以二進制或文本。 這些文件通常僅用於應用程序支持訪問和使用,並且每個應用程序以不同方式處理 .dat 文件。 因此,與 .gif 或 .docx 文件不同,.dat 文件不遵循影響所有 .dat 文件的特定協議。

如果您想了解 .dat 文件如何工作並將其轉換為人類可讀的格式,您需要事先了解應用程序如何處理這些文件。

對於中文字符,您嘗試通過UTF-16 格式解碼二進制.dat 文件。 那不會改變文件內容; 您只是對bbbb bbbb bbbb bbbb = xxxx的重復序列的字節序列進行分組,其中b是字節, x是十六進制數字。

許多 Unicode 字符是中文 [從技術上講,它們被稱為表意文字或表意文字],而其他字符則未使用,也稱為保留字符。

不是 python 答案,但strings命令行工具在逆向工程數據格式中通常是無價的,讓您輕松瀏覽二進制文件以尋找熟悉的明文模式。 顯然,如果使用某種加密/壓縮(例如常用的 gzip),它將無濟於事,需要先進行一些預處理。

調用它就這么簡單:

user@host:~/ $ strings mydir/settings.dat

如果是二進制文件,那為什么要查看呢? 除非您事先知道 settings.dat 包含人類可讀的字符,否則嘗試“查找”一種編碼以便輸出是人類可讀的字符是沒有意義的,因為您不會成功。

另一方面,如果您確實知道 settings.dat 包含人類可讀的字符,那么 utf-16 可能是錯誤的編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM