2017-04-20 100 views
2

我所涉及的信息安全过程改进,并有代码的元素,我需要了解:如何这个shell代码字符串转换为整数

"\x66\x68\xb0\xef". # PORT 

我的理解是,这应转化为一个整数价值> 1024但我不知道如何计算。

我可以看到这个字符串包含分离HEX值,从而试图打印由\ X分开,并获得相应的十六进制值如下:

>> print (int('66',16)) 
102 
>>> print (int('68',16)) 
104 
>>> print (int('b0',16)) 
176 
>>> print (int('ef',16)) 
239 

显然,这给了我四个单独的值,所以是不是我需要这是一个整数值。我希望对此有一些指导。

回答

4

struct是你的朋友。它配备整数转换成字节,字节为整数,如果这是一个大端代表性,那么你应该做的:

import struct 
as_int = struct.unpack('>I', the_str)[0] 

而且小端:

import struct 
as_int = struct.unpack('<I', the_str)[0] 
2

您可以解压缩到一个unsigned int与struct

>>> import struct 
>>> struct.unpack('I',"\x66\x68\xb0\xef")[0] 
4021315686