Python scapy raw到hex

时间:2018-03-30 22:24:47

标签: python hex scapy

我使用Scapy从数据包中获取原始字节,并且我试图解析十六进制,但原始字节为我提供了这种类型的输出:

B" \ X17 \ X03 \ X03 \ X00 \ XA3 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ xd6tK \ XF8 \ xc1itQ \ XA0;

一些字符串打印为ascii,难以解析,是否有一个函数只能在Scapy中获取十六进制数字或将其转换为十六进制而不是在ascii中打印?

另外,chexdump()由于某种原因只打印

2 个答案:

答案 0 :(得分:1)

是的,你有:

  

使用hexdump()使用经典hexdump显示一个或多个数据包   格式

价:

https://github.com/secdev/scapy/blob/master/doc/scapy/usage.rst

Scapy是Python lib,然后使用generator:

>>> [ "%02X"%(ord(x) & 0xff) for x in b'\x20\x56\x30\20' ]
>>> ' '.join([ "0x%02X"%(ord(x) & 0xff) for x in b'\x20\x56\x30\20' ])
>>> ' '.join([ "%02X"%(ord(x) & 0xff) for x in b'\x20\x56\x30\20' ])
>>> ''.join([ "%02X"%(ord(x) & 0xff) for x in b'\x20\x56\x30\20' ])

>>> rawbuffer = b'\x20\x56\x30\20'
>>> bufferArray = [ "%02X"%(ord(x) & 0xff) for x in rawbuffer ]
>>> strbuffer = ''.join(bufferArray)
>>> print(strbuffer)

答案 1 :(得分:0)

import binascii

binascii.hexlify(b"\x17\x03\x03\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xd6tK\xf8\xc1itQ\xa0;")

#outputs => b'17030300a300000000000000d6744bf8c1697451a03b'

是一种可以从bytestring

中获取十六进制字符串的方法

如果你真的希望它分为2个

b" ".join(re.findall(b'..',binascii.hexlify(b"\x17\x03\x03\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xd6tK\xf8\xc1itQ\xa0;")))

应该有效