Python3:试图将 b' ' 字符串解码为 ascii

Posted

技术标签:

【中文标题】Python3:试图将 b\' \' 字符串解码为 ascii【英文标题】:Python3: Trying to decode b' ' string to asciiPython3:试图将 b' ' 字符串解码为 ascii 【发布时间】:2022-01-15 17:10:34 【问题描述】:

我正在尝试解密 OTP。使用以下代码生成密钥:

class OTPGenerator(metaclass=Singleton):
_OTP_LEN = 128

def __init__(self):
    self.otp = os.urandom(OTPGenerator._OTP_LEN)

def get_otp(self):
    return self.otp

我通过套接字连接接收到加密文本:

b'7Vf\xba\xe1\xb1.\xeb\x05Y\xccL 1\xb2\xec\xb1<0\xb36\xce\xc3\x02\xd6^\xc6z\x15_\x88\x14k\xe9\x8c\xb1\xa5\xd5\xe3LKE8\x16\xe2\xe1\xf0\xe1+[_\xd47\x13\xd8T\xa7E\x8f\xf3SR\xd1'

另外一个由be作为明文给出的加密文本:

input = flag
Encrypted Input: b'\t\x17J\x9c'

我试图在对它们进行异或运算之前对其进行解码,但它们被转换为字符串。

有没有人遇到过类似的问题?

【问题讨论】:

将文本发布为 text,同时请说明您为自己解决此问题所做的研究。 如果是str,则无法解码。如果是bytes,你可以。分享代码 \xbe 无论如何都是 utf-8 的无效起始字节,因此可能需要对该数据的来源进行更多调查。 尝试打印没有解码部分的文本,您的文本似乎已经被解码了。 【参考方案1】:

os.urandom 模块产生 N 个随机字节,其中 N 作为参数传递。从这个意义上说,我不确定您要解码什么,因为这是随机数据。

无论如何,this answer 可能就是您要查找的内容,它将os.urandom 生成的数据转换为 base64 编码字符串。

from base64 import b64encode
from os import urandom

random_bytes = urandom(64)
token = b64encode(random_bytes).decode('utf-8')

【讨论】:

已经找到了这个答案,不幸的是它没有帮助,因为 urandom() 输出是字节,但是通过套接字连接接收它会将其解释为字符串。 @adicpnn: 但通过套接字连接接收它会将其解释为字符串...它没有。

以上是关于Python3:试图将 b' ' 字符串解码为 ascii的主要内容,如果未能解决你的问题,请参考以下文章

Python3之字符编码

python3中的编解码

python3编码问题个人理解

python3中编码和解码

[Python3]JSON解析

Python3'ascii'编解码器无法编码字符