scapy - srp не отправляет мой пакет на правильный сетевой интерфейс - PullRequest
1 голос
/ 10 ноября 2019

Я работаю на машине с Windows 10 и использую scapy для какого-то проекта, который я делаю.

Когда я использую функцию сниффинга для анализа пакетов из моего интерфейса Ethernet, она работает как положено, но когда я использую srp1чтобы отправить пакет с того же интерфейса, он отправляет мой пакет через мой интерфейс vEthernet, а не через мой физический интерфейс Ethernet (поэтому пакет никогда не попадает в пункт назначения).

Вот мой код сниффа против srp1:

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

, как вы можете видеть в обоих вызовах, я использую имя интерфейса "Ethernet".

Может кто-нибудь сказать мне, что делать, чтобы мой пакет отправлялся через Ethernet, а не через vEthernet?

1 Ответ

1 голос
/ 11 ноября 2019

Если вы откроете оболочку Scapy и наберете IFACES (ATM только для Windows), вам будет показан точный список интерфейсов.

Затем вы можете использовать объект интерфейса, а не имя. (см. 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

...