为了复制数据包而分叉 scapy 的最佳方法是什么
What is the best way to fork scapy in order to duplicate packets
我有一个非常简单的脚本,它应该使用 scapy 复制数据包:
from scapy.all import *
import pprint
ips = [
"192.168.0.1",
"192.168.0.2",
"192.168.0.3",
"192.168.0.4",
"192.168.0.5",
"192.168.0.6",
"192.168.0.7"
]
def dup_pkt(pkt):
pprint.pprint(pkt)
if pkt[IP].dst == "10.0.0.1":
for ip in ips:
pkt2 = copy.deepcopy(pkt)
pkt2[IP].dst = ip
print "Packet1:",pkt[IP].dst,"Packet2:",pkt2[IP].dst
send(pkt2)
pkts = sniff(prn=dup_pkt, filter="port 53", store=0, count=2)
我希望不使用 for 循环,而是一次将它发送到多个目的地。我考虑过分叉进程,每个进程都会发送数据包,但它仍然给我留下了 for 循环。
此外 - send() 非常慢,但 sendp() 不适合,因为我有不同的目的地。
我读过这篇文章:how to send one udp packet multiple time in scapy ? 但那里没有答案。
如何一次发送多个数据包?
谢谢
send()
函数可以接收要发送的数据包列表:
def dup_pkt(pkt):
pprint.pprint(pkt)
if pkt[IP].dst == '10.0.0.1':
pkts = []
for ip in ips:
pkt2 = pkt.copy() # use the copy method rather than copy.deepcopy
pkt2[IP].dst = ip
pkts.append(pkt2)
print "Packet1: ", pkt[IP].dst, " Packet2: ", pkt2[IP].dst
send(pkts) # send all packets at once
我有一个非常简单的脚本,它应该使用 scapy 复制数据包:
from scapy.all import *
import pprint
ips = [
"192.168.0.1",
"192.168.0.2",
"192.168.0.3",
"192.168.0.4",
"192.168.0.5",
"192.168.0.6",
"192.168.0.7"
]
def dup_pkt(pkt):
pprint.pprint(pkt)
if pkt[IP].dst == "10.0.0.1":
for ip in ips:
pkt2 = copy.deepcopy(pkt)
pkt2[IP].dst = ip
print "Packet1:",pkt[IP].dst,"Packet2:",pkt2[IP].dst
send(pkt2)
pkts = sniff(prn=dup_pkt, filter="port 53", store=0, count=2)
我希望不使用 for 循环,而是一次将它发送到多个目的地。我考虑过分叉进程,每个进程都会发送数据包,但它仍然给我留下了 for 循环。
此外 - send() 非常慢,但 sendp() 不适合,因为我有不同的目的地。
我读过这篇文章:how to send one udp packet multiple time in scapy ? 但那里没有答案。
如何一次发送多个数据包?
谢谢
send()
函数可以接收要发送的数据包列表:
def dup_pkt(pkt):
pprint.pprint(pkt)
if pkt[IP].dst == '10.0.0.1':
pkts = []
for ip in ips:
pkt2 = pkt.copy() # use the copy method rather than copy.deepcopy
pkt2[IP].dst = ip
pkts.append(pkt2)
print "Packet1: ", pkt[IP].dst, " Packet2: ", pkt2[IP].dst
send(pkts) # send all packets at once