我有一个 UDP 数据包捕获,该数据包从网络 N1 上的 IP1 上的端口 1 流式传输到 IP2 上的端口 2。我需要在另一个网络 N2 上重放这些数据包,从 IP3 上的端口 3 到 IP4 上的端口 4。
我需要知道使用什么软件才能做到这一点,以及如何重放这些数据包,以便我可以在 N2 中再次检测/捕获它们。
到目前为止,我已经尝试使用名为 Colasoft Packet Player 的程序严格重放这些数据包,但收效甚微。
答案1
tcpreplay(https://tcpreplay.appneta.com/)似乎也能做你想做的事,也许只需一步就可以使用tcprelat-编辑程序,但我个人还没有运行过这个软件。
来自tcpreplay-编辑 概述:
tcpreplay 多年来经历了许多演变。在 1.x 时代,它只是读取数据包然后通过网络发送回去。在 2.x 中,tcpreplay 得到了显著增强,增加了各种重写功能,但代价是复杂性、性能和臃肿。现在在 3.x 中,tcpreplay 回归本源,成为一台精简的数据包发送机器,编辑功能已转移到 tcprewrite 和将两者结合起来的强大的 tcpreplay-edit。
由于 tcpreplay-edit 包含 tcpreplay 和 tcprewrite 的所有功能,请参阅这些 wiki 页面了解如何使用 tcpreplay-edit。
答案2
BitTwist(http://bittwist.sourceforge.net) 应该可以做你想做的事。
使用 Bit-Twist,您现在可以将捕获的流量重新生成到实时网络上!数据包由 tcpdump 跟踪文件 (.pcap 文件) 生成。Bit-Twist 还附带一个全面的跟踪文件编辑器,允许您更改跟踪文件的内容。
“跟踪文件编辑器”部分是您在这里最感兴趣的。
我认为您需要分两次进行转换:一次更改 IP 地址,另一次更改 UDP 端口号。我相信您可以按任意顺序执行此操作。
bittwiste -I original.pcap -O changedip.pcap -T ip -s IP1,IP3 -d IP2,IP4
bittwiste -I changedip.pcap -O changedipandport.pcap -T udp -s Port1,Port3 -d Port2,Port4
您需要在其中输入 IP 地址和端口号,例如
bittwiste -I original.pcap -O changedip.pcap -T ip -s 192.168.0.1,10.10.0.3 -d 192.168.0.2,10.10.0.4
bittwiste -I changedip.pcap -O changedipandport.pcap -T udp -s 12345,24680 -d 80,8080
如果你的原始捕获文件仅包含原始机器的 IP 和端口号,则可以通过在编辑命令中不提及旧 IP 和端口号来简化此过程,例如
bittwiste -I original.pcap -O changedip.pcap -T ip -s 10.10.0.3 -d 10.10.0.4
bittwiste -I changedip.pcap -O changedipandport.pcap -T udp -s 24680 -d 8080
生成从 10.10.0.3:24680 到 10.10.0.4:8080 的数据包。
从网络 N2 中的一台机器上,你应该能够changedipandport.pcap
使用科来数据包播放器(http://www.colasoft.com/packet_player)或命令行BitTwist玩家,例如
bittwist -i 1 changedipandport.pcap
这里的“1”代表设备 1。用于bittwist -d
列出设备。
BitTwist 播放器还具有 Colasoft Packet Player 所不具备的其他巧妙选项,尤其是通过乘数更改发送数据包的速度(例如,原始速度的 5 倍或原始速度的 0.1 倍)。
我已经成功测试了此方法Wireshark(http://www.wireshark.org)捕获从 i-device 上的 TouchOSC 发送到我的笔记本电脑(通过 WiFi)端口 8000 的 OSC 数据(UDP 数据包),使用比特维斯特(编辑器)将目标 IP 地址更改为我的有线以太网适配器地址,将 UDP 端口更改为 8001,然后使用比特扭曲(玩家)纯数据(http://puredata.info) 补丁监听 8001 端口。