Python Scapy-持久性RandIP

Python Scapy-持久性RandIP,python,tcp,scapy,Python,Tcp,Scapy,我试图用scapy模拟两台主机之间的TCP通信 我的问题是,我不能保存scapy为我生成的随机IP地址 此代码 src_IP = RandIP() print(src_IP) print(src_IP) print(src_IP) 给我这样的输出 234.200.98.20 147.3.56.17 135.102.142.49 所以每次我访问src_IP它都有一个新值 有没有办法从scapy保存一个随机IP?因此,我可以在函数开始时生成2个IP,并将它们用作TCP通信的源和目标。 我可以自

我试图用scapy模拟两台主机之间的TCP通信

我的问题是,我不能保存scapy为我生成的随机IP地址

此代码

src_IP = RandIP()

print(src_IP)
print(src_IP)
print(src_IP)
给我这样的输出

234.200.98.20
147.3.56.17
135.102.142.49
所以每次我访问
src_IP
它都有一个新值

有没有办法从scapy保存一个随机IP?因此,我可以在函数开始时生成2个IP,并将它们用作TCP通信的源和目标。
我可以自己生成IP,但我认为必须有一个更优雅的解决方案

顺便说一句,如果不发送任何数据包,它们将被写入PCAP文件。因此,我必须创造沟通的双方。

我找到了答案。
RandIP()
创建一个对象的实例,每次访问该对象,打印或发送数据包或其他内容时,它都会生成一个新的IP

所以我的解决办法是把它放到一根弦上

src_IP = str(RandIP())

print(src_IP)
print(src_IP)
print(src_IP)
并且输出与预期一样

232.119.133.38
232.119.133.38
232.119.133.38
公认的答案是黑客;这是正确的(如“它工作并按要求做”),但在Scapy中这不是正确的方法

您正在寻找的方法是
\u fix()
。它将与任何可变值类型一起工作

src_IP = RandIP()._fix()
例如,如果您还需要一个随机源端口,您可以执行以下操作:

src_port = RandShort()._fix()

我从未听说过_fix(),但由于我的python知识有限,我可能只是忽略了它,或者它是scapy唯一的功能?它起作用了!谢谢,但我留下的一个小问题是,我的IDE(PyCharm)通知我“访问一个类的受保护成员_fix()”这只是PyCharm或特定于Scapy volatile value API的“真实”的问题。确实,以
开头的方法被认为是私有的,但是您可以访问它。也许应该将方法名称更改为
.fix()
,我们必须考虑一下!