1、介绍
参考链接:https://www.cnblogs.com/zlslch/p/7325599.html?utm_source=itdadao&utm_medium=referral
tcpreplay是一种pcap包的重放工具, 它可以将用ethreal, wireshark工具抓下来的包原样或经过任意修改后重放回去. 它允许你对报文做任意的修改(主要是指对2层, 3层, 4层报文头), 指定重放报文的速度等, 这样tcpreplay就可以用来复现抓包的情景以定位bug, 以极快的速度重放从而实现压力测试
tcpreplay本身包含了几个辅助工具(tcpprep、tcprewrite、tcpreplay和tcpbridge), 用于准备发包的cache, 重写报文等。这也是 Tcpreplay 的第一个字母大写T的原因 。
* tcpprep - 简单的说就是划分哪些包是client的, 哪些是server的, 一会发包的时候client的包从一个网卡发, server的包可能从另一个网卡发。
即区分pcap数据包的流向,即区分出客户端和服务器。
* tcprewrite - 简单的说就是修改2层, 3层, 4层报文头部。
即改写pcap数据包的2-4层的头部信息,即MAC地址、IP地址和PORT等。
* tcpreplay - 真正发包, 可以选择主、从网卡, 发包速度等。
即回放pcap文件中的数据包。
* tcpreplay-edit-更写pcap数据并回放,将tcprewrite和tcpreplat一条命令实现。
* tcpbridge - bridge two network segments with the power of tcprewrite。
2、tcpreplay用法
不同版本的tcpreplay的使用方法区别还有点大,使用前使用tcpreplay -h查看下用法。
常用通用参数:
-p pps 指定速度
-M Mbps 指定速度
-i 指定网卡
-l loop 指定回放次数
-L 限制回放包的个数
-t topspeed 以最快的速度回放
--oneatatime 一次回放一个,按Enter后回放下一个
--listnics 获取机器的发包接口
3、tcprewrite用法
tcprewrite 就是改写 pcap 包里的报文头部, 包括 2 层, 3 层, 4 层,即 MAC 地址、IP 地址和PORT 等
-r 重写tcp/udp端口
-s 随机改写ip地址
-i 指定输入pcap
-o 指定输出pcap
修改示例1:
tcprewrite --enet-smac=11:22:22:22:22:22,22:22:22:22:22:22 \ --enet-dmac=FF:FF:FF:FF:FF:FF \ --endpoints=192.168.0.1:192.168.0.11 \ --portmap=5070:5061,9060:5060 \ -i success.pcap -o out.pcap -c success.cach
该命令将修改后的包的
主机端的二层, 三层, 四层头分别为: 11:22:22:22:22:22,192.168.0.1,5061,
客户端包的二层, 三层, 四层头分别为: 22:22:22:22:22:22,192.168.0.11, 5060。
success.cach文件指定哪些包是主机包, 哪些包是客户端包,这个参数可以不要。
修改示例2:
tcprewrite --seed=6 -i success.pcap -o out.pcap -c success.cach
该命令将根据数字 6 按特征算法生成一个新的 server_ip 和 client_ip。
修改示例3:
tcprewrite --pmap=192.168.0.0/16:10.77.0.0/16,172.16.0.0/12:10.1.0.0/24 \ -i success.pcap -o out.pcap -c success.cach
该命令将把主机端和客户端 192.168.0.0/16、172.16.0.0/12 网段的 ip 地址分别改为 10.77.0.0/16、10.1.0.0/24。
cpwrite对5-7层的修改非常有限, 顶多也就是抓包没有抓全, 中间的应用层数据丢了。tcpwrite将没有抓到的数据补成全0, 或者修改tcp/udp的长度字节, 或者将该包丢弃.。
4、tcpprep
tcpprep 是一个在 tcprewrite 和 tcpreplay 之前使用的 pcap 文件的处理程序。使用 tcpprep 的目的就是建立一个 cach 文件,用于分离通信流量中的两方(通常叫做 主要的/次要的 或者 客户端/服务器),为 tcprewrite 和 tcpreplay 处理与发送报文做准备。