我使用Scapy从数据包中获取原始字节,并且我试图解析十六进制,但原始字节为我提供了这种类型的输出:
B" \ X17 \ X03 \ X03 \ X00 \ XA3 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ xd6tK \ XF8 \ xc1itQ \ XA0;
一些字符串打印为ascii,难以解析,是否有一个函数只能在Scapy中获取十六进制数字或将其转换为十六进制而不是在ascii中打印?
另外,chexdump()由于某种原因只打印
答案 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;")))
应该有效