Я пытаюсь действовать как фальшивая машина, которая отправляет запросы ARP на мой хост (а также на другие машины в указанной c сети, использующей указанный c интерфейс). Вот мой фрагмент кода, чтобы спамить указанный c IP-адрес хоста на указанном c интерфейсе с ARP-запросами от поддельного MA C адреса / IP-адреса:
import scapy.all
import threading
import time
import argparse
def arp_sender(iface, host_ip, guest_ip, guest_mac):
arp_req = scapy.layers.l2.ARP(psrc=guest_ip, pdst=host_ip)
bcast = scapy.layers.l2.Ether(
src=guest_mac, dst='ff:ff:ff:ff:ff:ff')
arp_req_bcast = bcast / arp_req
while True:
time.sleep(2)
scapy.all.sendp(arp_req_bcast, iface=iface)
if __name__ == "__main__":
pasrer = argparse.ArgumentParser()
pasrer.add_argument('--iface', '-i', required=True)
pasrer.add_argument('--host-ip', required=True)
pasrer.add_argument('--guest-ip', required=True)
pasrer.add_argument('--guest-mac', required=True)
args = pasrer.parse_args()
th = threading.Thread(target=arp_sender, args=(
args.iface, args.host_ip, args.guest_ip, args.guest_mac
))
th.start()
th.join()
При прослушивании ответов на Wireshark другие хосты в той же сети отвечают на запросы ARP, но не на моем хосте, где находится поддельная машина, которая отправляет запросы ARP. Я также пытался отправлять запросы ARP на машину Virtualbox на моем хосте, но также не получил ответа. Что-то не так с тем, как я отправляю пакеты уровня 2 с помощью Scapy, или мне нужно что-то еще сделать на моем хосте, чтобы принимать входящие пакеты из моего скрипта?
Редактировать
Проверено на Windows 10 хосте. Во время тестирования я отключил все брандмауэры (private, publi c и domain).