同じマシンで 2 つのイーサネット カードを接続するネットワーク ブリッジを作成しています。カードの 1 つは LAN に接続され、もう 1 つはネットワーク デバイスに接続されます。それはこのようなものに見えます、
両方のインターフェイスでパケットをスニッフィングし、sendp(x,iface='eth0')
eth1 でスニッフィングしたパケットを使用して他方に送信し、その逆も同様です。
両方のインターフェイスでパケットを確認し、それらが正しいことを確認しましたが、どういうわけかデバイスの IP を取得できません。以下は私のコードの一部です。インターフェイスごとに 1 つずつ、2 つのスレッドを作成します。
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 の原則を使用すると、この問題が解決します。