斯皮永存兰迪普

2024-09-24 22:26:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

这个代码

src_IP = RandIP()

print(src_IP)
print(src_IP)
print(src_IP)

给我一个这样的输出

^{pr2}$

所以每次我访问src_IP它都有一个新值。在

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

顺便说一句,没有一个包将被发送,它们将被写入PCAP文件。因此,我必须创造双方的沟通。在


Tags: 函数代码ipsrc目标pcap解决方案scapy
2条回答

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

所以我的解决方案是把它转换成一个字符串

src_IP = str(RandIP())

print(src_IP)
print(src_IP)
print(src_IP)

输出与预期一致

^{pr2}$

在 公认的答案是一个黑客攻击;它是正确的(就像“它工作并按要求做什么”),但在Scapy中这不是正确的方法。在

您要查找的方法是._fix()。它适用于任何易失性值类型。在

src_IP = RandIP()._fix()

例如,如果您还需要随机源端口,可以执行以下操作:

^{pr2}$

相关问题 更多 >