将时髦的“ IP”类型转换为“字节”

问题描述 投票:1回答:1

我正在使用python3和nfqueue即时修改数据包。

背景

Scapy版本:2.4.1

Python的NetfilterQueue(PyPi)具有将数据包转换为与“ scapy兼容”的字符串/字节,反之亦然的方法,这些是:]]

  • get_payload,在python 2中返回与scapy兼容的string

    ,在python 3中返回BYTES
  • set_payload,它设置了我们对scapy的处理后设置包的有效载荷。

  • 问题

使用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转换为“字节”?

我正在使用python3和nfqueue即时修改数据包。背景Scapy版本:2.4.1 Python的NetfilterQueue(PyPi)具有将数据包转换为“与Scapy兼容”的字符串/字节的方法,并且...

python python-3.x scapy netfilter
1个回答
2
投票

从源代码中,您可以调用build方法,也可以将IP对象直接作为bytesIPimplements dunder方法传递给__bytes__

© www.soinside.com 2019 - 2024. All rights reserved.