scapy "TypeError: объект 'IP' не вызывается" - PullRequest
0 голосов
/ 10 октября 2018

в моем скрипте 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' не вызывается

Может кто-нибудь подсказать, пожалуйста, как это исправить?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы переопределяете функцию fragment с помощью переменной цикла for, поэтому fragment становится неотзываемым объектом на следующей итерации внешнего цикла.

Вы должны переименовать fragment переменная к чему-то другому:

for frag in frags:
    sendp(l2/frag, iface=iface)
0 голосов
/ 10 октября 2018

Вы должны определить IP с другим, не вызываемым значением в settings.py, поэтому класс IP, определенный пакетом scapy, будет переопределен.Вы можете решить эту проблему, переименовав переменную IP в settings.py во что-то другое.В качестве альтернативы вы можете сделать import settings вместо from settings import * и затем обратиться к переменной IP в settings.py как settings.IP.

...