发送scapy IP数据包没有接口IP错误



我当前正在尝试使用send(pkt,iface =" eth0")函数将IP数据包发送到接口,并且我会收到错误:

WARNING: Mac address to reach destination not found. Using broadcast

我试图发送的接口没有IP地址,这就是我更喜欢它的方式。如果有所不同,接口是桥梁(用BRCTL创建)

IP数据包中的主机有一个ARP条目,但是Scapy似乎并没有从ARP表中获取Mac所需的查找...

想法?!

我会说这是正常的,因为提出有效的ARP请求需要IP地址(Scapy维护自己的ARP表,独立于OS One)。

您可以自己设置目标地址:srp(Ether(dst="[MAC address]")/[...])。如果您需要先获取MAC地址,请以相同的方式创建并发送ARP请求。

要查询Scapy的ARP表,访问元素conf.netcache.arp_cache,这是SCAPY特定的dict子类(称为CacheInstance)。

例如,为主机添加条目(然后使用sr([...])而不是srp(Ether(dst="[MAC address])/[...])),请使用:

conf.netcache.arp_cache['[IP address]'] = '[MAC address]'

Scapy中以太网框架的默认DST地址(MAC地址)是广播的。就我而言,每当您将以太网框架发送到广播地址(FF:FF:FF:FF:FF:FF:FF)时,就会生成此警告。您可以通过创建这样的数据包来看到这一点:

ether()/ip()或ether()/arp()

而不仅仅是ip()或arp()。

最新更新