Scapy --TypeError: необязательный метод copy () должен вызываться с экземпляром UDP в качестве первого аргумента - PullRequest
0 голосов
/ 10 ноября 2018

Я пишу скрипт на Python, который создает пакеты UDP на уровне 2 с помощью Scapy.

Однако я постоянно получаю «TypeError» при включении опций / атрибутов UDP () в определение пакета.

Код:

Return_Data = sendp( Ether(dst="ff:ff:ff:ff:ff:ff", type=0x800) \
/ IP(version=4L, ihl=5L, tos=0x0, len=64,                 \
id=0, flags=0, frag=0L, ttl=64, proto=UDP,              \
chksum = 30495, src="xxx.xxx.xx.xxx", dst="xxx.xxx.x.x") /  \
UDP(sport=31123, dport=31123, chksum=0x6f21, len=30) / Raw(load=Payload) )

Traceback (последний последний вызов):

Файл "EthCfgRx_Test_3.py", строка 20, в UDP (sport = 31123, dport = 31123, chksum = 0x6f21, len = 30) / Raw (нагрузка = полезная нагрузка))

Файл "/home/watouser/.local/lib/python2.7/site-packages/scapy/packet.py", строка 349, в div cloneB = other.copy ()

Файл "/home/watouser/.local/lib/python2.7/site-packages/scapy/packet.py", строка 200, в копии clone.fields = self.copy_fields_dict (self.fields)

Файл "/home/watouser/.local/lib/python2.7/site-packages/scapy/packet.py", строка 382, ​​в copy_fields_dict для fname, fval в шести.iteitems (полях)}

Файл "/home/watouser/.local/lib/python2.7/site-packages/scapy/packet.py", строка 382, ​​в для fname, fval в шести.iteitems (полях)}

Файл "/home/watouser/.local/lib/python2.7/site-packages/scapy/packet.py", строка 377, в copy_field_value вернуть self.get_field (имя поля) .do_copy (значение)

Файл "/home/watouser/.local/lib/python2.7/site-packages/scapy/fields.py", строка 86, в do_copy return x.copy ()

TypeError: необязательный метод copy () должен вызываться с экземпляром UDP в качестве первого аргумента (вместо этого ничего не получил)

Любой совет?

Заранее спасибо!

1 Ответ

0 голосов
/ 11 ноября 2018

Scapy автоматически свяжет пакеты.

Неправильная часть, кажется, Proto=UDP. Прото должен быть числом, а не классом.

При выполнении операции / Proto будет предоставлен автоматически, поэтому вам не нужно указывать его

...