我使用Scapy从数据包中获取原始字节,并尝试解析十六进制,但是原始字节给出了以下类型的输出:
b"\x17\x03\x03\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xd6tK\xf8\xc1itQ\xa0;
一些字符串打印为ascii,这使得解析变得困难,有没有一个函数可以在Scapy中只获取十六进制数字,或者将其转换为十六进制而不打印在ascii中?
此外,由于某种原因,chexdump()只打印
发布于 2018-03-31 06:29:54
是的,你有:
使用十六进制转储()显示一个或多个使用经典十六进制转储格式的包
参考:
https://github.com/secdev/scapy/blob/master/doc/scapy/usage.rst
Scapy是Python库,然后使用生成器:
>>> [ "%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)
发布于 2018-03-31 06:31:28
import binascii
binascii.hexlify(b"\x17\x03\x03\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xd6tK\xf8\xc1itQ\xa0;")
#outputs => b'17030300a300000000000000d6744bf8c1697451a03b'
是从字节串中获取十六进制字符串的一种方法
如果你真的想把它分成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;")))
应该行得通
https://stackoverflow.com/questions/49582187
复制相似问题