scapy "TypeError: 'IP' object is not callable"

scapy "TypeError: 'IP' object is not callable"

在我的 Scapy 脚本中出现错误,我找不到原因。

#!/usr/bin/python
from scapy.all import *
from settings import *

#Create  Layer-2 Frame. 
l2 = Ether( dst=dst, src=src, type=2048) #dst and src from settings
pkt = IP(dst=dst)/ICMP(type=8)/Raw(load=("X"*10000))
#Create some big pings:
for i in range(10000,10020):
    frags = fragment(pkt) #create Fragments    
    for fragment in frags:
        sendp(l2/fragment, iface=iface)
    print("i: " + str(i))

Scapy 发送一整包之后,我变成了错误信息:

TypeError: 'IP' object is not callable

有人可以告诉我如何解决这个问题吗?

您必须在 settings.py 中使用不同的不可调用值定义 IP,因此 scapy 包定义的 IP class被覆盖。您可以通过将 settings.py 中的 IP 变量重命名为其他名称来解决此问题。或者,您可以执行 import settings 而不是 from settings import *,然后将 settings.py 中的 IP 变量引用为 settings.IP.

您正在使用 for 循环变量覆盖 fragment 函数,因此 fragment 在外循环的下一次迭代中成为不可调用的对象。

您应该将 fragment 变量重命名为其他名称:

for frag in frags:
    sendp(l2/frag, iface=iface)