Создание UDP-пакетов с помощью Scapy - PullRequest
0 голосов
/ 02 июля 2018

У меня проблемы с отправкой пользовательских пакетов UDP со Scapy на Python3 с MacBook. Я хочу отправить пакет UDP с пользовательским исходным IP-адресом 192.168.1.11 на мою текущую машину с IP-адресом 192.168.1.17, на котором размещен UDP сервер через порт 6789. Я хочу отправить сообщение «Привет» с помощью Scapy, поэтому я написал следующий код:

from scapy.all import *
from random import randrange
sendp(IP(src="192.168.11",dst="192.168.1.17")/UDP(sport=randrange(80,65535),dport=6789)/"Hi",iface="en0",count=10)

Тогда у меня есть сервер, ожидающий ответа после получения данных и распечатки полученного сообщения на экране. Но при выполнении этого кода с повышенными привилегиями, Scapy говорит the packets were sent but the server didn't receive the response.

Итак, я пошел на en0 беспроводной интерфейс на моем Mac для отладки. Вот что я нашел:

Wireshark говорит

the source is Applicon_11:f8:61, the destination is 45:00:00:1e:00:01, the protocol is 0xc0a8(Unknown) and the data is 16 bytes of Hex: 0000   45 00 00 1e 00 01 00 00 40 11 f8 61 c0 a8 00 0b ASCII Dump:  E.......@.øaÀ¨..
0010   c0 a8 01 11 67 18 1a 85 00 0a b3 66 48 69         À¨..g.....³fHi

Я понятия не имею, что это значит или что я здесь делаю неправильно, может ли кто-нибудь помочь указать мне правильное направление?

1 Ответ

0 голосов
/ 03 июля 2018

sendp для отправки на уровне 2 send для отправки на уровне 3

В вашем случае вы должны использовать

  • на слое 2: sendp(Ether()/IP(..)....). (Заменить Ether на Loopback при необходимости)

  • на уровне 3: send(IP(...))

...