1.利用tcpprep区分客户端-服务端 tcpprep
- 确定服务端的3种方法:
- tcpprep 就能帮助我们完成客户端-服务端的区分,生成file.cache文件
知名端口
:-p -s services文件服务器ip
: -c 192.168.0.0/16,172.16.0.0/12,10.0.0.0/8交互流程
:-a client
- 参考命令如下:
tcpprep -p -s /etc/services -i input.pcap -o input.cache
tcpprep -c 8.8.8.8,114.114.114.114 -i input.pcap -o input.cache
tcpprep -a client -i input.pcap -o input.cache
2.查看客户端-服务端的区分效果 tcpprep
- tcpprep -S file.cache
- 能查看3种区分服务端的方法的效果,最好客户端-服务端区分为1:1
- 如下,36个报文
- 服务端为18个,即
Primary
- 客户端为18个,即
Secondary
Primary packets: 18
Secondary packets: 18
Skipped packets: 0
------------------------------
Total packets: 36
3.根据客户端-服务端修复报文的2-3-4层 tcprewrite
- 有时我们需要按客户端、服务端分别修改报文的2-3-4层,以便在测试环境回放
3.1 修改3层的ip 按客户端-服务端分别修改
- 比如客户端统一修改为192.168.100.1
- 比如服务端统一修改为192.168.100.2
- 利用上一节生成的file.cache,就能办到
tcprewrite -e 192.168.100.1:192.168.100.2 -c input.cache -i input.pcap -o output.pcap
3.2 修改2层的mac 接收方统一全部修改
- 统一将流量里的dst_mac修改为接收方,方便回放
- 若使用上一节生成的file.cache,仅服务端的mac被修改
- 不使用上一节生产的file.cache,则可以使用接收方的mac全被修改
tcprewrite -i input.pcap -o output.pcap --enet-dmac=00:50:56:22:58:2f
4.回放报文 tcpreplay
- 具体的参数,tcpreplay -h或man tcpreplay即可
- 示例命令如下
tcpreplay -i enp3s0 --loop=0 --loopdelay-ms=5000 output.pcap &
4.1 循环回放+设置间隔
- 使用-l 0:设置循环回放
- 使用–loopdelay-ms=x000:设置间隔为x秒
- 若希望能以最高速度回放即-t,是无法与–loopdelay-ms兼容
- 可以利用sleep x替代–loopdelay-ms选项,编写脚本完成模拟回放
5.参考资料