Я создаю сетевой мост, который соединяет две сетевые карты на одном компьютере. Одна из карт подключена к локальной сети, а другая — к сетевому устройству. Это выглядит примерно так,
Я обнюхиваю пакеты на обоих интерфейсах, а затем отправляю их на другой, используя sendp(x,iface='eth0')
для пакета, который я перенюхал на eth1, и наоборот.
Я проверил пакеты на обоих интерфейсах и нашел их правильными, но почему-то не могу получить IP-адрес устройства. Ниже приведен фрагмент моего кода, я создаю два потока, по одному для каждого интерфейса:
from scapy.all import*
**THREAD1:**
pkt=sniff(iface="eth0",store=1,count=1)
outbuff=[]
outbuff+=pkt[:]
for src in outbuff[:]
srcmac=src.sprintf(r"%Ether.src%")
if srcmac==deviceMAC:
pass
else:
sendp(self.outbuff[:],iface="eth1",verbose=0)
**THREAD2:**
pkt=sniff(iface="eth1",store=1,count=1)
outbuff=[]
outbuff+=pkt[:]
for src in outbuff[:]
srcmac=src.sprintf(r"%Ether.src%")
if srcmac==deviceMAC:
sendp(self.outbuff[:],iface="eth1",verbose=0)
else:
pass
Может ли кто-нибудь помочь мне с проблемой или предложить мне альтернативное решение для этой реализации?
РЕШЕНО: комбинация Python+IPTABLES и использование принципов TRIGGER решает эту проблему.