繁体   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