使用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君

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值