我想使用scapy在线上发送特定的十六进制序列,例如FF FF FF FF FF FF,而不使用Raw选项。找到相当于这些十六进制序列的字符串并将它们用作数据包有效负载具有相同的效果,因为scapy会将它们转换为十六进制并发送?
答案 0 :(得分:1)
在python 2.x中,您可以使用binascii
模块从十六进制字符串创建二进制数据。我已经使用它在DHCPv6请求中正确设置了duid,只是将它传递给了数据包类型的选项。
例如
>>> import binascii
>>> binascii.unhexlify('FFFFFFFFFFFF')
'\xff\xff\xff\xff\xff\xff'
将该字符串传递给有效负载应该是您所需要的。当然,你可以像上面那样用\x
转义键入字符串,但是当你需要正确的二进制数据时,它更容易将它表示为一个漂亮的十六进制字符串并调用unhexlify
。