tcpreplay-tcprewrite

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章