python - 发送没有接口(interface) IP 错误的 scapy IP 数据包

标签 python ip scapy mac-address arp

我目前正在尝试使用 send(pkt, iface="eth0") 函数将 IP 数据包发送到接口(interface),但出现错误:

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

我尝试发送的接口(interface)没有 IP 地址,这是我希望的方式。如果它有所作为,接口(interface)就是一个桥梁(用 brctl 创建)

IP 数据包中有主机的 ARP 条目,但似乎 scapy 没有执行从 ARP 表中获取 MAC 所需的查找...

想法?!

最佳答案

我会说这是正常的,因为发出有效的 ARP 请求需要一个 IP 地址(并​​且 Scapy 维护自己的 ARP 表,独立于操作系统)。

您可以自己设置目标地址: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]'

关于python - 发送没有接口(interface) IP 错误的 scapy IP 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30194872/

相关文章:

python - PyCharm 助手没有出现在 vagrant 中

python - 有没有办法直接在 python (或 Ironpython)中导入 c *.lib 而不进行任何包装?

python - 如何将范围(从两列)分解为行

node.js - NodeJS ip 分片

azure - 为 Azure 网站保留的出站 IP 地址

Python脚本继续运行

python - Apache Spark 将哪些数据传送到执行节点

python - sklearn LinearSVC - X 每个样本有 1 个特征;期待 5

python - 虚拟数据包字段 : how to handle a polymorphic protocole?

http - 从 pcap 文件中提取 TCP 负载