使用 nc (netcat) 广播消息

Posted

技术标签:

【中文标题】使用 nc (netcat) 广播消息【英文标题】:Broadcasting a message using nc (netcat) 【发布时间】:2012-10-28 23:52:42 【问题描述】:

我正在尝试使用 netcat 发送广播消息。

我打开了防火墙并发送这样的常规消息对我有用:

  host: nc -l 192.168.1.121 12101
  client: echo "hello" | nc 192.168.1.121 12100

但我无法让这样的事情发挥作用。

  host: nc -lu 0.0.0.0 12101
  client: echo "hello" | nc -u 255.255.255.255 12100

我是否使用了正确的标志?请注意,主机在 Mac 上,客户端在 Linux 上。你能给我一个广播消息的例子吗?

谢谢!

【问题讨论】:

我来这里是为了让busybox nc 进行UDP 广播。使用 -v 选项,它告诉我不允许广播。一旦我在connect_w_timeout(netfd); 调用之前添加了setsockopt_broadcast(netfd);,一切正常。 【参考方案1】:

netcat 的 GNU 版本可能已损坏。 (反正我不能在 0.7.1 下工作。)见http://sourceforge.net/p/netcat/bugs/8/

我已经让 socat 工作了。下面的代码将 UDP 广播到端口 24000。

socat - UDP-DATAGRAM:255.255.255.255:24000,broadcast

(在 socat 世界中“-”的意思是“标准输入”。)

【讨论】:

如果需要指定源端口,只需在末尾添加“,sourceport=1001”即可【参考方案2】:

您并不是说要广播,这是使用 -b 选项到 nc/netcat 完成的。

nc -h 2>&1 | grep -- -b
-b          allow broadcasts

【讨论】:

您使用的是哪个版本的 netcat? macOS nc 和busybos 都没有,有这个标志...... Linux 上的标准版本,这是请求者所要求的。 macOS 是它一贯的古怪自我。 busybox 包含所有实用程序的一个非常基本的子集。 @fork2execve 没有“标准”nc。 Linux 有一个版本,BSD 有另一个。两者都不是古怪的。【参考方案3】:

一个适用于 Ubuntu 的简单示例。中的所有信息都在其他答案中,但我不得不将它们拼凑在一起,所以我想我会分享结果。

服务器

nc -luk 12101

客户

echo -n "test data" | nc -u -b 255.255.255.255 12101

客户端将挂起,直到您按 Ctrl-C

【讨论】:

效果很好。应该是正确答案! Ncat: UDP mode does not support the -k or --keep-open options, except with --exec or --sh-exec. QUITTING.【参考方案4】:

对不起,如果我假设错了,但你提到你的防火墙设置正确,所以我猜主机和客户端不在同一个子网上???

如果是这种情况,并且此防火墙还充当路由器(或者如果数据包必须通过路由器),那么它将处理该数据包,但不会将其转发到其他接口。如果您希望这种情况发生,那么您需要发送定向广播。例如;对于子网 192.168.1.0/24,定向广播将是 192.168.1.255,即子网中的最后一个 IP。然后防火墙,假设它有一个到 192.168.1.0/24 的路由并且它被设置为转发定向广播,会将该广播转发到目的地或下一跳。将您的设备配置为转发定向广播...您需要参考其文档。对于 Cisco ios,您可以在界面下输入“ipdirected-broadcast”。

255.255.255.255 是有限广播,无论如何都不会通过您的路由器,它仅用于它所在的第 2 层链路。

至于netcat是怎么设置的:

-l 0.0.0.0 12101,告诉 netcat 在所有启动并分配 IP 地址的接口上侦听端口 12101。 -u 不需要,因为它告诉 netcat 侦听 unix 域套接字,google IPC :)(这是您的方案不起作用的最大原因。)

下面应该可以通过 netcat 将广播转发到另一个网络:

服务器:nc -l 0.0.0.0 12101 主持人:回声“你好” |数控 192.168.1.255 12101

希望对您有所帮助,对不起,如果那是冗长的或偏离您所寻找的内容:)

【讨论】:

-u 是 UDP。 -U 是 Unix 套接字(在支持它的版本中)。 向特定 IP 地址发送消息不广播 192.168.1.255 不是特定地址 :)

以上是关于使用 nc (netcat) 广播消息的主要内容,如果未能解决你的问题,请参考以下文章

(11)nc命令(每周一个linux命令)

Netcat-NC 工具的使用

NC / Netcat - 反弹Shell

netcat nc

Netcat

nc 命令