shell 记录来自特定地址的 UDP 流

shell 记录来自特定地址的 UDP 流

我正在尝试记录传入的 UDP 流(流的意义是它是连续数据报的流)。

我试过了netcat,但不幸的是多种来源在相同的端口地址上发送数据,并且nc不允许您指定源或目标多播地址。

然后我尝试了,tcpdump -w -因为 tcpdump 有丰富的过滤选项,但它记录了原始流,而我只需要实际数据,这样我就可以像处理流一样处理它。不幸的是,它记录了所有与数据包相关的信息,如源/目标或 IP/UDP 标头。

有办法吗?我可以编写一个小的 C 程序来执行此操作,但我更喜欢使用现有的工具。

答案1

我的第一选择是 wireshark。如果你必须从终端执行此操作,你也可以尝试 ngrep,它提供的输出比 tcpdump 更易读。你可能可以使用简单的 bash 脚本过滤掉标头信息。

http://ngrep.sourceforge.net/usage.html#http

答案2

您可以使用wireshark.它可以做你想做的事,甚至更多。

wireshark如果您想要的是接收流中的数据并将其提供给程序,则没有用。在这种情况下,我不得不说您使用了错误的协议。如果我是你,我会欺骗

希望您使用的是 Linux。在这种情况下,请制定防火墙重写规则,将来自所需源的传入 UDP 数据包(发送到正确的端口)发送到另一个端口,您可以在该端口上使用 netcat 记录流中的数据。

问题将帮助您开始。

答案3

网状或 iptables +libnetfilter_queue 模块或者 ngrep 可能会做你想做的事。

相关内容