在Python 2.7的pwntools库中,地址声明为address = p64(0x7fffffff0000)
。尽管我在编辑期间一直遇到转换错误,但我一直在绞尽脑汁想出如何增加该地址的方法。我最初是从基本的东西开始的:
from pwn import *
address = p64(0x7fffffff0000) # starting hex value
for i in range(0, 65535): # how many times you want to increment
i +=1
address = p64(0x7fffffff0000 + i) # increment varhex by 1
print address
尽管输出,而不是以十六进制的方式增加输出,而不是以unicode的方式增加,就像这样:
...
_-\xff\xff\xff\x7f\x00\x00
`-\xff\xff\xff\x7f\x00\x00
a-\xff\xff\xff\x7f\x00\x00
...
有人知道如何递增此变量以使输出显示为:
...
\x01\x00\xff\xff\xff\x7f\x00\x00
\x02\x00\xff\xff\xff\x7f\x00\x00
...
\x00\x01\xff\xff\xff\x7f\x00\x00
...
答案 0 :(得分:1)
p64
只是str
的简单转换器。在Python 2上打印str
时,repr
将优先显示\x
转义符,以显示可打印的ASCII字符。如果要防止这种情况,则需要以您喜欢的形式明确地编写它。一个简单的修复程序可能是:
from future_builtins import map, zip # Gets Python 3 generator based version of map/zip
from itertools import repeat
import binascii
def bytes_to_x_escapes(s):
hexstring = binascii.hexlify(s)
escapecodes = map(''.join, zip(repeat(r'\x'), *[iter(hexstring)]*2))
return ''.join(escapecodes)
使用此修复程序,您可以将print
更改为:
print bytes_to_x_escapes(address)
它将显示您的期望方式。