【问题标题】:How to convert this shell code string to an integer [duplicate]如何将此shell代码字符串转换为整数[重复]
【发布时间】:2017-09-16 23:22:02
【问题描述】:

我正在学习信息安全课程,并且有一个我需要理解的代码元素:

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

我的理解是这应该转换为整数值 > 1024 但我不确定如何计算。

我可以看到这个字符串包含分隔的 HEX 值,因此尝试打印由 \x 分隔的各个 HEX 值并得到以下结果:

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

显然,这给了我四个单独的值,所以不是我需要的,它是一个整数值。

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以使用struct 解压缩为无符号整数:

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

    【讨论】:

      【解决方案2】:

      struct 是你的朋友。它将整数打包成字节,将字节打包成整数,如果这是一个大端表示,那么你应该这样做:

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

      对于小端:

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

      【讨论】:

        猜你喜欢
        • 2012-06-28
        • 1970-01-01
        • 2010-11-21
        • 2011-04-17
        • 2021-04-17
        • 2013-10-06
        • 2021-09-10
        相关资源
        最近更新 更多