【问题标题】:pwntools' p32 function is weirdpwntools 的 p32 功能很奇怪
【发布时间】:2021-05-20 01:58:48
【问题描述】:

我正在 Intel x86_64、Ubuntu 64bit、Python3、Pwntools v4.3.1 上进行测试

$ python
Python 3.7.4 (default, Aug 13 2019, 20:35:49) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pwn import *
>>> addr = 0xbffffb78
>>> print(p32(addr))
b'x\xfb\xff\xbf'

在我看来,0xbffffb78 的正确打包结果应该是\x78\xfb\xff\xbf

但是为什么b'x\xfb\xff\xbf'会发生呢? \x78 在哪里?

什么是正确的打包方式,而不是使用p32()

【问题讨论】:

  • 几乎是一个很好的问题。只是需要一些研究。

标签: python pack unpack pwntools


【解决方案1】:

这就是 Python 呈现 bytes objects 的方式。如果一个字节可以呈现为 ASCII 字符,则显示为一个。

>>> b"\x78"
b'x'

要查看呈现为十六进制的字节,您可以使用字节对象的hex method

>>> b'x\xfb\xff\xbf'.hex()
'78fbffbf'

【讨论】:

  • 我明白了。仅仅是打印输出的问题吗?实际数据是否仍保持为 \x78?
  • @CPUU 我在答案中添加了一些关于将字节显示为十六进制的信息。
猜你喜欢
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多