我正在尝试使用 TCP 重播发送数据包。该文件是在另一个网络中捕获的,包含 UDP 数据包。为了重播,我使用以下命令更改了源地址和目标地址等:
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
Run Code Online (Sandbox Code Playgroud)
更改数据包后,我尝试使用 tcpreplay 重播:
sudo tcpreplay --intf1=enp0s25 changed.cap
Run Code Online (Sandbox Code Playgroud)
tcpdump 显示数据包已被重写并且显然正常:
[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 > …
Run Code Online (Sandbox Code Playgroud)