Я пытаюсь действовать как фальшивая машина, которая отправляет ARP-запросы моему хосту (а также другим машинам в определенной сети с использованием определенного интерфейса). Вот мой фрагмент кода для спама определенного IP-адреса хоста на определенном интерфейсе с запросами ARP с поддельного MAC-адреса / 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. Во время тестирования я отключил все брандмауэры (частные, общедоступные и доменные).
scapy_br.py
в связанном вопросе. Этот вопрос напрямую не связан с QEMU как таковым, а скорее с тем, как я буду общаться между моим хостом (или другой виртуальной машиной внутри хоста) и Scapy на определенном интерфейсе. 24.02.2020