使用 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) 广播消息的主要内容,如果未能解决你的问题,请参考以下文章