[英]Sending scapy IP packet with no interface IP error
我正在尝试使用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)。
您可以自己设置目标地址: 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)时,就会产生此警告,就我而言。 你可以通过这样创建数据包来看到这个:
以太()/ IP()或以太()/ ARP()
而不仅仅是IP()或ARP()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.