scapy-srp无法将我的数据包发送到正确的网络接口

时间:2019-11-10 15:30:35

标签: python scapy python-netifaces

我在Windows 10机器上工作,并且正在为我正在执行的某些项目使用scapy。

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

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

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

在两个呼叫中都可以看到,我使用“以太网”接口名称。

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

1 个答案:

答案 0 :(得分:2)

如果打开Scapy shell并键入IFACES(仅Windows ATM),则会显示确切的接口列表。

然后可以使用接口对象,而不是名称。 (有关各种实用程序功能,例如help(IFACES) ...,请参见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