繁体   English   中英

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

[英]Bash one-line command to send wake on LAN magic packet without specific tool

是否有可能伪造一个唤醒局域网魔术数据包并只用一行bash命令发送它?

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

我能想到的最低要求

  • 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。 或者,这次是双线:-)命令:

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 进制specificator(使得11变为\\x1122变得\\x22 ...等等)之前发送所述字符串到网络以堆。
  • LAN包上的伪造唤醒被发送到网络堆栈,将其连接到NetCat 可以使用SoCat (语法当然会有所不同)。

测试在Ubuntu,卡利甚至CygWin的(视窗7 SP 1 64位) 的工作

考虑到:

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

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

FFFFFFFFFFFF112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566

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

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

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

这意味着如果您的网络上有主机支持这种旧的简单标准服务,则在使用端口7时将获得不必要的反向散射流量,但在使用端口9时则没有。由于LAN唤醒通常是广播的,因此您可以从后面进行反向散射很多主人。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM