如何在python中添加bytearrays?

时间:2014-12-01 00:15:44

标签: python hex addition shellcode

我是python中的新手。 我有一个shellcode的bytearray:

a=bytearray('\x31\xcb\x50\x69').

我要做的就是为每个人+1来获得这个结果:

bytearray('\x32\xcc\x51\x6a').

如何在python中实现这些目标的好主意?

谢谢你,最诚挚的问候,

3 个答案:

答案 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