1

我目前正在研究一个 Python 脚本,该脚本能够将所有二进制文件隐藏在其内部。它通过从目标文件中读取所有二进制数据,然后将其存储在自身内部的列表中来实现这一点。然后它会删除文件以隐藏它。

这是我的问题:当我将读取的字节存储在脚本文件中时,Python 抱怨它不是 UTF-8 代码。这是我读取的原始数据的一个小样本:

ßëM€€Ê yQtm×ßü«WTª¼É[–±Ê

如何在不破坏脚本的情况下存储这些字节?我想我可以将每个字节存储为一个代码点,以便解释器接受它。但是我如何告诉 write()-I/O 函数将字节写入代码点?

4

1 回答 1

5

您应该对二进制文件进行编码 - 例如,使用 base64 编码 - 将字节转换为“合法字符”。然后,当您需要二进制信息时,将其转换回来。

例如,有关一些代码示例,请参见这个较早的问题

一个简短的示例可以帮助您:

# assume your bytes came from a file:
bytesIneed = bytearray([234,232,231,188,122,132,145])
import base64

bytesConverted = base64.b64encode(bytesIneed)

print "encoded string: "
print bytesConverted

bytesRecovered = base64.b64decode(bytesConverted)

print "decoded binary: "
for c in bytesRecovered: print(ord(c))

这将返回以下输出:

encoded string:
6ujnvHqEkQ==
decoded binary:
234
232
231
188
122
132
145

如您所见 - 字符串6ujnvHqEkQ==可以存储在任何地方;解码功能将其转换回您需要的二进制数据。

于 2013-08-28T15:47:06.267 回答