使用xcap进行更改报文并进行回放以及回放报文只能看到请求流量看不到响应流量的问题
問題背景:
整體的網絡環境: A------>B|C--------->D其中bc是一個虛擬機的兩張網卡進行轉發,達到A、D兩臺機器相互通信的網絡環境。現在為了測試中間虛擬機的一些功能,需要使用xcap進行構造/修改報文,并且在A端進行回放報文操作。1.從wireshark進行抓包,獲取到相關報文組:
比如你想讓這條網絡擁有http的流量,那么最好先在本地機中抓取一個完整的http交互,(syn,acksyn,ack,fin,finack),這樣我們改的時候要改的包也都在,而且不需要更改過多信息。然后將報文組保存為.pcap的文件。
2.從xcap中修改報文:
首先我測試的時候xcap的版本是xcap1.0.3,打開xcap,右擊報文組,創建報文組,然后右擊新建出來的報文組,點擊從.pcap文件中讀取報文,選擇想要讀取的報文,選擇想要修改的報文,點擊確定。重新查看報文組就能看到剛才選擇的報文,雙擊修改的報文,進入修改界面。
這里以修改http報文為例子:
首先嘗試更改ip:
點擊上方的ipv4,下方的source address進行更改源IP,Destination address進行更改目的IP,下方的兩個自動更改都要打勾,checksum旁邊的auto也要打勾
更改端口信息:
點擊上方的TCP,更改端口信息,下方的checksum選中自動計算,在key下方的include all options 打勾。
更改http報文信息:
(貌似其他版本的有更簡單的方式,可以直接使用字符串的方式更改報文,但是我這個版本不支持,只能將通過更改16進制矩陣更改報文信息)
對比左右兩邊,左邊為16進制矩陣,右為字符串形式,跟你你想改的部分更改左邊的內容,右邊就是更改后的字符串的形式,想要插入可以選擇想要插入的地方,然后點擊insert,然后輸入長度值,之后再進行更改。
這里要注意,不能把原來的格式給改了,否則就可能解析不到,(雖然人家網卡傳報文肯定是沒問題),比如http中每個字段之間要隔個\r\n,在請求行和請求體之間的空行之類的等等…
修改后點擊保存,然后將報文組保存為文件,就更改成功了,
注意此時保存的時候是.xcap文件,wireshark不能識別,如果想用wireshark使用修改后的報文,或者想變成.pcap文件,可以先用xcap發包,然后wireshark抓取,再進行保存…
3.用xcap回放報文:
右擊左側欄中接口,點擊刷新接口,可以看到當前主機的所有網卡,右擊想要完成發送操作的網卡,點擊啟動接口,點擊想要發送的報文組,可以看到報文組上面有可以選擇接口的地方,選擇剛才打開的接口,然后點擊發送報文(像刷新圖標的那個),就可以了。
下方的策略可以選擇循環或者N次發送
3.實際遇到的坑點:
由于我1、3操作都是使用同一臺電腦操作的,所以在A---->B|C---->D這樣的環境中,在B|C電腦上抓取不到響應報文,只有請求報文。
這樣的原因是因為A在面對響應報文的時候發現,目的MAC地址就是自己,于是就不再進行轉發,就自己接收了。
要想避免這樣的情況要么就把A的mac地址改寫,要么就把報文組中所有包的目的MAC改寫成其他地址(可以是D的地址)。
當然要是1、2操作是在一個環境中做的,3在一個環境中做的,就不會出現這樣的問題,比如…造包的是開發A君,使用回放報文測試的是測試B君
總結
以上是生活随笔為你收集整理的使用xcap进行更改报文并进行回放以及回放报文只能看到请求流量看不到响应流量的问题的全部內容,希望文章能夠幫你解決所遇到的問題。