首页 > 解决方案 > scapy - srp 没有将我的数据包发送到正确的网络接口

问题描述

我在 Windows 10 机器上工作,我正在为我正在做的一些项目使用 scapy。

当我使用嗅探功能从我的以太网接口嗅探数据包时,它按预期工作但是当我使用 srp1 从同一接口发送数据包时,它通过我的 vEthernet 接口而不是通过我的物理以太网接口发送我的数据包(所以数据包永远不会到达目的地)。

这是我的嗅探与 srp1 的代码:

a = sniff(count = 1, iface = "Ethernet")
p = srp1(pkt, iface = "Ethernet")

正如您在两个调用中看到的那样,我使用“以太网”接口名称。

有人能告诉我该怎么做,我的数据包将通过以太网而不是 vEthernet 发送吗?

标签: pythonscapypython-netifaces

解决方案


如果您打开 Scapy shell 并键入IFACES(仅限 Windows ATM),您将看到确切的接口列表。

然后您可以使用接口对象,而不是名称。(请参阅help(IFACES)各种 util 函数,例如IFACES.dev_from_id()... 来获取它)。

例子:

from scapy.arch.windows import IFACES
a = IFACES.dev_from_id(5)
sr1(IP(dst="www.google.com")/ICMP(), iface=a)

另请参阅https://stackoverflow.com/a/55093154/5459467


推荐阅读