了解Scapy“未找到目的地的Mac地址。使用广播。”警告

时间:2013-09-04 22:50:36

标签: scapy

如果我生成一个没有任何上层有效负载的以太网帧,并使用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 个答案:

答案 0 :(得分:14)

大多数遇到此问题的人都错误地使用send() (或sr()sr1()srloop()而非{{ 1}} (或sendp()srp()srp1())。对于记录,“{ - 1}}”之类的“不 - srploop()”函数用于发送第3层数据包(p),而“with - send()”变量用于发送图层2个数据包(send(IP()))。

如果您定义p,就像我在下面这样做并使用sendp(Ether() / IP())(而不是x)并且您仍然遇到此问题,那么您应该尝试使用该项目的git中的最新版本存储库(见https://github.com/secdev/scapy)。

我试过了:

sendp()

同时我正在运行tcpdump:

send()