0

我目前使用pwnlibstruct.pack()p32()从 pwnlib 打包十六进制数,我总是得到字节对象输出。

b'\xde\xad\xbe\xef'

我试过str.decode('utf-8')了,但在某些情况下有错误输出。有没有办法解码这个?我正在使用 python3 和 pwntools 4.3

4

1 回答 1

0

字节对象前缀很重要,删除它是错误的。

它只是对象的 python 内部表示。如果您需要它来编写包含相同字节的 C 字符串,您应该为它编写一个函数,或者使用十六进制转义或八进制转义对其进行编码。

在 python 中,3 个字节不是文本。它是一个八位字节序列,字节数组。

Text 是一系列 unicode 代码点,就像unicodepython 2. '\xaa'中的 type 只是 的简写'\u00aa',简写只会造成混淆,所以尽可能避免使用它。使用字节对象表示二进制数据,使用 unicode 字符串文本对象表示文本。

请参阅https://github.com/Gallopsled/pwntools-tutorial/blob/master/bytes.md

于 2021-03-24T20:15:11.193 回答