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 處理與發送報文做準備。