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
キャプチャファイルに送信したいパケットがあるようです。
netcatで再生すると、パケットが接続されます。パケットキャプチャ中、UDPパケットサイズは208で、Wiresharkはパケットサイズを250とマークし、ここにイーサネットバイトが含まれているとします。再生中、Wiresharkはパケットサイズが1016であることを示しています。
答え1
これは不可能ですが、socat
代わりに使用する場合は、次のようにnetcat
固定ブロックサイズを簡単に設定できます-b
。
socat -b 208 - udp4:230.250.5.1:12345 <capturefile
可変長データがある場合とtcpdump
ファイル形式の使用tcpreplay
を検討できますpcap
。