2017-04-20 102 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