我目前使用pwnlibstruct.pack()
或p32()
从 pwnlib 打包十六进制数,我总是得到字节对象输出。
b'\xde\xad\xbe\xef'
我试过str.decode('utf-8')
了,但在某些情况下有错误输出。有没有办法解码这个?我正在使用 python3 和 pwntools 4.3
我目前使用pwnlibstruct.pack()
或p32()
从 pwnlib 打包十六进制数,我总是得到字节对象输出。
b'\xde\xad\xbe\xef'
我试过str.decode('utf-8')
了,但在某些情况下有错误输出。有没有办法解码这个?我正在使用 python3 和 pwntools 4.3
字节对象前缀很重要,删除它是错误的。
它只是对象的 python 内部表示。如果您需要它来编写包含相同字节的 C 字符串,您应该为它编写一个函数,或者使用十六进制转义或八进制转义对其进行编码。
在 python 中,3 个字节不是文本。它是一个八位字节序列,字节数组。
Text 是一系列 unicode 代码点,就像unicode
python 2.
'\xaa'
中的 type 只是 的简写'\u00aa'
,简写只会造成混淆,所以尽可能避免使用它。使用字节对象表示二进制数据,使用 unicode 字符串文本对象表示文本。
请参阅https://github.com/Gallopsled/pwntools-tutorial/blob/master/bytes.md