Bash单行命令在没有特定工具的情况下发送唤醒LAN魔术包

时间:2015-07-23 12:55:59

标签: bash wake-on-lan

是否可以伪造唤醒局域网魔术数据包并仅使用单行bash 命令发送它?

当然,我知道有一些特定的工具可以在一行中解决问题,但了解WOL锻造的最低要求可能很有用。这是:如何处理局域网唤醒没有特定工具

2 个答案:

答案 0 :(得分:24)

最低要求我可以想一想:

  • Bash 支持大括号扩展(我认为是v3.5.1及以上版本)。
  • sed 命令(1)。
  • NetCat的即可。

假设:

  • LAN的WOL包,广播到255.255.255.255。

命令行将是:

echo -e $(echo $(printf 'f%.0s' {1..12}; printf "$(echo $MAC | sed 's/://g')%.0s" {1..16}) | sed -e 's/../\\x&/g') | nc -w1 -u -b 255.255.255.255 4000

$MAC替换为目标MAC。或者,这次是双线:-)命令:

MAC=11:22:33:44:55:66
echo -e $(echo $(printf 'f%.0s' {1..12}; printf "$(echo $MAC | sed 's/://g')%.0s" {1..16}) | sed -e 's/../\\x&/g') | nc -w1 -u -b 255.255.255.255 4000

所以,用更通用的表示法:

MAC=11:22:33:44:55:66
Broadcast=255.255.255.255
PortNumber=4000
echo -e $(echo $(printf 'f%.0s' {1..12}; printf "$(echo $MAC | sed 's/://g')%.0s" {1..16}) | sed -e 's/../\\x&/g') | nc -w1 -u -b $Broadcast $PortNumber

说明:

  • WOL 魔术数据包由ffffffffffff组成(12次f),然后是目标MAC的16倍,没有冒号(:)。
  • 这里使用sed命令从MAC中删除删除冒号:)并添加\x 十六进制指定程序(以便在将字符串发送到网络堆栈之前,11变为\x1122变为\x22 ......等等)。
  • 伪造的LAN唤醒包被发送到网络堆栈将其连接到NetCat 。可以使用SoCat(语法当然会有所不同)。

在Ubuntu,Kali甚至CygWin(Windows 7 SP 1 64位)上测试过工作

考虑到:

  • CygWin的NetCat 版本不需要-b参数。
  • NetCat的OpenBSD版本今天(Juy 2015)有关于广播数据发送(-b)的错误,因此您必须将其替换为NetCat传统版本(apt-get安装程序上的netcat-traditional包)。
  • 此示例使用 UDP端口 4.000。 特定端口号似乎对WOL不重要。
  • 上述单行bash命令也适用于LAN 通过互联网唤醒。在这种情况下,将$Broadcast地址替换为目标公共IP,并在目标上打开/转发指定的$PortNumber(UDP)。
  • echo -e可以替换为printf

以上示例的WOL魔术包字符串:

FFFFFFFFFFFF112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566

(1)确实,sed没有明确要求。它用于删除':'并将\x添加到魔术包的伪造字符串中的每对字符。我知道有一些方法可以通过某种shell扩展来替换sed

答案 1 :(得分:0)

用于唤醒传输的默认端口是UDP端口9。

推荐使用

UDP,因为它可以在没有安全限制的原始套接字的情况下生成,并且建议使用端口9,因为它映射到旧的众所周知的丢弃协议。有时您会看到正在使用端口7,但这映射到了echo协议。

这意味着,如果网络中有主机支持此旧的简单标准服务,则在使用端口7时将获得不必要的反向散射流量,而在使用端口9时将不会获​​得不必要的反向散射流量。由于通常会广播局域网唤醒,因此您可以得到许多主机的反向散射。

此外,如果要使用网络嗅探器(例如Wireshark)对WoL进行故障排除,则仅当它们是端口9上的UDP数据包时,它才能正确解码WoL数据包。

来源:https://superuser.com/questions/295325/does-it-matter-what-udp-port-a-wol-signal-is-sent-to