首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重放捕获的udp通信量

重放捕获的udp通信量
EN

Stack Overflow用户
提问于 2018-10-01 17:27:46
回答 2查看 8.7K关注 0票数 4

我正在尝试使用TCP重放发送数据包。该文件在另一个网络中捕获,并包含UDP数据包。为了重播,我更改了src和目标地址,etc...using命令如下:

代码语言:javascript
复制
tcprewrite --infile=original.cap --outfile=changed.cap --srcipmap=0.0.0.0/0:<MY HOST IP>/32 --dstipmap=0.0.0.0/0:<MY HOST IP>/32 --enet-dmac=<enp0s25 mac addr> --enet-smac=<enp0s25 mac addr> --fixcsum

更改数据包后,我尝试使用tcpreplay重放:

代码语言:javascript
复制
sudo tcpreplay --intf1=enp0s25  changed.cap

tcpdump显示数据包被重新写入,并且完全正常:

代码语言:javascript
复制
[root@localhost ~]# tcpdump -i enp0s25 udp port 6302 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s25, link-type EN10MB (Ethernet), capture size 262144 bytes
09:31:56.758809 IP localhost.localdomain.qb-db-server > localhost.localdomain.6302: UDP, length 673
09:31:56.758836 IP localhost.localdomain.12608 > localhost.localdomain.6302: UDP, length 669
09:31:56.758845 IP localhost.localdomain.13024 > localhost.localdomain.6302: UDP, length 671
09:31:56.758967 IP localhost.localdomain.11584 > localhost.localdomain.6302: UDP, length 666
....

但是,如果我启动netcat来监听端口0.0.0.0:6302,我就看不到任何流量!

你知道怎么回事吗?

EN

回答 2

Stack Overflow用户

发布于 2019-09-05 11:53:26

这是完全正常的。参数--intf1设置输出接口,而不是输入接口。因此,您的数据包不会被注入到linux网络堆栈中。换句话说,接口驱动程序的输出函数用于发送数据包,这不是您想要的。

要解决这个问题,您需要使用来自应用程序(如netcat)的UDP套接字,并发送pcap的UDP有效负载,或者在另一台机器上运行tcpreplay (也可以是VM)。

这样,tcpreplay将使用接口(由-intf1 1设置)来“输出”数据包,而您的机器将使用驱动程序的输入函数将数据包注入Linux网络堆栈。

票数 4
EN

Stack Overflow用户

发布于 2018-10-01 23:43:55

我看到您正在重放该文件以与enp0s25接口。但是,您的tcpdump输出显示您正在本地主机上捕获。尝试tcpdump -i enp0s25

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52596037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档