如何在自己的Scapy中设置流量到达时间

1 投票
1 回答
2618 浏览
提问于 2025-04-18 01:45

这是我用来生成HTTP流量的脚本

from scapy.all import *
from random import randint
import time
from threading import *

# Generate packet
pkts = IP(src="10.0.0.1",dst="10.0.0.2")/TCP()/"GET /HTTP/1.0\r\n\r\n"/Raw(RandString(size=120))
#print pkts
pkts[TCP].flags = "S"
pktList = []
for pktNum in range(0,20):
    pktList.extend(pkts)
    pktList[pktNum][TCP].dport = randint(1,65535) # Pkt has Ran PortNo.
    print pktList[pktNum].summary()
    print len(pktList[pktNum])

# Send the list of packets
start_time=time.time()
send(pktList)
print time.time() - start_time,"seconds"
#print start_time, "secs"
pktList[0].show()

现在的问题是,我无法以自定义的字节每秒速率发送流量。我该如何根据自己的需求来发送呢?

1 个回答

3

请查看关于 scapy 的文档,特别是第35页。你可以通过调整 send 命令中的 inter 参数来指定发送数据包的速率。

比如,如果你想要每秒发送100个数据包,可以这样写:

send(pktList, inter = 0.01)

如果你想要更精确地控制发送速率,可以使用 scapy 的 sendpfast 命令,在这里你可以定义比特率(mbps 参数):

sendpfast(pkt, pps=N, mbps=N, loop=0, iface=N)

撰写回答