我是python中的新手。 我有一个shellcode的bytearray:
a=bytearray('\x31\xcb\x50\x69').
我要做的就是为每个人+1来获得这个结果:
bytearray('\x32\xcc\x51\x6a').
如何在python中实现这些目标的好主意?
谢谢你,最诚挚的问候,
答案 0 :(得分:3)
>>> a=bytearray('\x31\xcb\x50\x69')
>>> a
bytearray(b'1\xcbPi') # repr uses a different but equivalent representation
>>> bytearray(x + 1 for x in a)
bytearray(b'2\xccQj')
您需要考虑+1到0xff
例如
bytearray((x + 1) % 0xff for x in a) # wrap around
或
bytearray(min(x + 1), 0xff) for x in a) # limit to 0xff
如果你正在做一些
,那么使用translate
方法可能会更快
>>> trans_table = bytearray(range(1, 256)) + '\x00'
>>> a.translate(trans_table)
bytearray(b'2\xccQj')
如果要打印数组,请使用repr()
函数
>>> print a
1�Pi
>>> print repr(a)
bytearray(b'1\xcbPi')
答案 1 :(得分:2)
a = bytearray('\x31\xcb\x50\x69')
a = bytearray(b + 1 if b < 255 else 0 for b in a)
如果要剪切值而不是回绕到零,请将0
更改为255
。
答案 2 :(得分:0)
您可以执行以下操作:
a=bytearray('\x31\xcb\x50\x69')
new_a = bytearray(b + 1 for b in a)
for b in new_a:
print('{:02x}'.format(b))
输出:
32
cc
51
6a