我正在使用python3和nfqueue即时修改数据包。
背景
Scapy版本:2.4.1
Python的NetfilterQueue(PyPi)具有将数据包转换为“与Scapy兼容”的字符串/字节,反之亦然的方法,这些方法是:
-
get_payload
,在python 2中返回与scapy兼容的 string ,在python 3中返回 BYTES 。 -
set_payload
,这是在我们完成后检查之后设置数据包的有效载荷。
问题
使用get_payload
之后,可以使用scapy的IP()
方法来愉快地修改数据包的各个部分。但是,完成后,剩下的是“ IP”类型的对象,我想将其转换为“字节”类型(以便能够在其上使用set_payload
)。
打印IP属性时的代码输出
(“ nnnn”是这种情况下的实际数据包数据)
running...
<class 'scapy.layers.inet.IP'>
b'E\x00\x008\x82\x00@\x00@\x06\xba\xbd\x7f\x00\x00\x01\x7f\x00\x00\x01\xeaj\x1f\x91(\x02\xb9\xffq\xa4\xd6\xbe\x80\x18\x02\x00\xf2W\x00\x00\x01\x01\x08\n\xa8b\x11*\xa8b\x11*nnnn'
b'nnnn'
Argument 'payload' has incorrect type (expected bytes,got IP)
Q
如何在Python3中将类型scapy.layers.inet.IP
转换为“字节”?