是否有分隔符或某种方式告诉 netcat 从文件中每个数据包发送多少字节?在脚本中多次调用 netcat 是不可接受的,因为我需要尽快将它们发送出去。
我已使用 mnc(多播 netcat)将带有二进制数据的 UDP 数据包捕获到文件中,并尝试按如下方式播放它们:
# 启动程序发送组播数据包到230.250.5.1 12340>
# 启动mnc抓包:
$mnc -l -i eth1 -p 12340 230.250.5.1 >capturefile
... # 使用netcat播放数据包,发送到230.250.5.1 12345
$netcat -c -w 1 -u -s 10.20.30.40 230.250.5.1 12345 <capturefile
capturefile 似乎有我想要发送的数据包。
当我用 netcat 回放时,数据包被连接起来。在数据包捕获期间,UDP 数据包大小为 208,wireshark 显示数据包大小为 250,我假设包括以太网字节。重播时,wireshark 显示数据包大小为 1016。
答案1
这对您来说可能不可能,但如果您使用socat
而不是,netcat
您可以使用以下命令轻松设置固定块大小-b
:
socat -b 208 - udp4:230.250.5.1:12345 <capturefile
如果您有可变长度数据,您可能会考虑使用tcpdump
和tcpreplay
以及pcap
文件格式。