29

是否可以伪造LAN 唤醒魔术包并仅通过一行 bash命令发送它?

当然,我知道有一些特定的工具可以一次性解决这个问题,但了解 WOL 锻造的最低要求可能会很有用。这就是:如何在没有特定工具的情况下处理 LAN 唤醒。

4

2 回答 2

37

我能想到的最低要求:

  • Bash支持大括号扩展(我认为是 v3.5.1 及更高版本)。
  • sed命令 (1) 。
  • 网猫

假设:

  • 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魔术包由( ffffffffffff12 次f) 后跟 16 次不带冒号 ( :) 的目标 MAC 组成。
  • sed命令在此处用于从 MAC中删除冒号( ) 并在将字符串发送到网络堆栈之前添加十六进制说明符(因此变为、变为... 等等)。:\x 11\x1122\x22
  • 伪造的 LAN 唤醒包被发送到通过管道将其发送到 NetCat的网络堆栈。可以改用SoCat(当然,语法会有所不同)。

Ubuntu、Kali 甚至 CygWin(Windows 7 SP 1 64 位)上进行了测试。

考虑:

  • CygWin 的 NetCat版本不需要-b参数。
  • NetCat的 OpenBSD 版本在今天(2015 年 7 月)在广播数据发送-b
  • 此示例使用UDP 端口4.000。特定的端口号在 WOL 上似乎并不重要。
  • 上面的单行 bash 命令也适用于通过 internet在 LAN 上唤醒。在这种情况下,用目标公共 IP 替换$Broadcast地址,并在目标上打开/转发指定的$PortNumber(UDP)。
  • echo -e可以替换为printf

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

FFFFFFFFFFFF112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566

(1) 嗯,确实,sed没有明确要求。它在这里用于删除“:”并添加\x到魔术包的伪造字符串中的每对字符。我知道有一些方法可以用sed一些 shell 扩展来代替。

于 2015-07-23T12:55:58.637 回答
2

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

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

这意味着,如果您的网络上有支持这种旧的简单标准服务的主机,您将在使用端口 7 时获得不必要的反向散射流量,但在使用端口 9 时不会获得。而且由于 LAN 唤醒通常是广播的,您可能会从许多主机。

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

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

于 2018-11-08T07:07:54.057 回答