我有跟踪文件名dec-pkt,其中有6列如下:
对于跟踪中的第一个数据包,这是 原始tcpdump时间戳。剩下的 数据包,这是整数的偏移量 第一个时间戳的一部分。
例如,如果第一个时间戳是187.2,那么 第二个是188.9,第三个是191.3,然后 ASCII文件中的前三个时间戳将 是187.2,1.9(= 188.9-187)和4.3(= 191.3-187)。
请注意,sanitize-syn-fin用作基准时间 第一个TCP数据包到达文件, 不是第一个TCP SYN / FIN / RST数据包(这有帮助 比较sanitize-syn-fin时间与那些 由sanitize-tcp生产。
(重新编号)目的地主机
请注意,重新编号过程会丢失任何IP网络 信息。
源TCP端口
目标TCP端口
数据包中的数据字节数,如果没有则为0(这个 可能会发生只有ack发送数据的数据包 另一方)
所以我想知道如何使用此文件生成此流量?可以Iperf 去做?如果不是我该怎么办?
答案 0 :(得分:0)
您可以通过Scapy轻松生成流量。它还带有Mininet VM,您可以在mininet官方网站上找到它。它可以同时为TCP和UDP生成数据包。
这是一个示例python代码。您可以在Github或Scapy的官方教程中找到更多信息。
import sys
import getopt
import time
from os import popen
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import sendp, IP, UDP, Ether, TCP
from random import randrange
def sourceIPgen():
not_valid = [10,127,254,1,2,169,172,192]
first = randrange(1,256)
while first in not_valid:
first = randrange(1,256)
ip = ".".join([str(first),str(randrange(1,256)),str(randrange(1,256)),str(randrange(1,256))])
return ip
def gendest(start, end):
first = 10
second =0; third =0;
ip = ".".join([str(first),str(second),str(third),str(randrange(start,end))])
# print start
# print end
return ip
#if __name__ == '__main__':
#main()
def main(argv):
# global start
# global end
print argv
try:
opts, args = getopt.getopt(sys.argv[1:],'s:e:',['start=','end='])
except getopt.GetoptError:
sys.exit(2)
for opt, arg in opts:
if opt =='-s':
start = int(arg)
elif opt =='-e':
end = int(arg)
if start == '':
sys.exit()
if end == '':
sys.exit()
interface = popen('ifconfig | awk \'/eth0/ {print $1}\'').read()
for i in xrange(1000):
packets = Ether()/IP(dst=gendest(start, end),src=sourceIPgen())/UDP(dport=80,sport=2)
print(repr(packets))
sendp( packets,iface=interface.rstrip(),inter=0.1)
if __name__ == '__main__':
main(sys.argv)
您可以这样称呼
python ./launchTraffic -s 2 -e 28