Понимание Scapy "MAC-адрес для адресата не найден. Использование трансляции". предупреждение

Если я создам кадр Ethernet без какой-либо информации верхнего уровня и отправляю его на второй уровень с помощью sendp(), тогда я получаю предупреждение "Mac address to reach destination not found. Using broadcast.", а кадр, помещенный в проводник, действительно использует ff: ff: ff: ff: ff: ff в качестве MAC-адреса назначения. Почему это так? Разве Scapy не посылает точно кадр, который я построил?

Мой обработанный пакет можно увидеть ниже:

>>> ls(x)
dst        : DestMACField         = '01:00:0c:cc:cc:cc' (None)
src        : SourceMACField       = '00:11:22:33:44:55' (None)
type       : XShortEnumField      = 0               (0)
>>> sendp(x, iface="eth0")
WARNING: Mac address to reach destination not found. Using broadcast.
.
Sent 1 packets.
>>> 

Ответ 1

Большинство людей, сталкивающихся с этой проблемой, неправильно используют send() (или sr(), sr1(), srloop()) вместо sendp() (или srp(), srp1(), srploop()). Для записи функции "без p", такие как send(), предназначены для отправки пакетов уровня 3 (send(IP())), в то время как варианты "with- p" предназначены для отправки пакетов уровня 2 (sendp(Ether() / IP())).

Если вы определяете x, как показано ниже, и используйте sendp() (а не send()), и у вас все еще есть эта проблема, вероятно, вы должны попробовать с последней версией из репозитория проекта git (см. https://github.com/secdev/scapy).

Я пробовал:

>>> x = Ether(src='01:00:0c:cc:cc:cc', dst='00:11:22:33:44:55')
>>> ls(x)
dst        : DestMACField         = '00:11:22:33:44:55' (None)
src        : SourceMACField       = '01:00:0c:cc:cc:cc' (None)
type       : XShortEnumField      = 0               (0)
>>> sendp(x, iface='eth0')
.
Sent 1 packets.

В то же время я запускал tcpdump:

# tcpdump -eni eth0 ether host 00:11:22:33:44:55
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:33:47.774570 01:00:0c:cc:cc:cc > 00:11:22:33:44:55, 802.3, length 14: [|llc]