Appearance
Appearance
WakeOnLAN 是所谓 Magic Packet 技术所使用的协议名称,该技术由 AMD 和 Hewlett Packard 开发,用于远程唤醒可能因电源管理功能而自动断电的远程主机。尽管电源管理可以帮助公司和个人降低用电成本,但它也给 IT 部门带来了问题,尤其是在需要快速、高效地远程管理 PC 时更是如此;在非工作时间运行期间,如果启用了电源管理功能,这些 PC 最有可能处于挂起或待机状态。
有关 WakeOnLAN 和 Magic Packet 技术的历史,请参阅这篇 wikipedia 文章,或阅读这份 AMD 白皮书。
Ethernet:根据 AMD 的白皮书,WakeOnLAN 仅依赖 Ethernet。不过,该白皮书也指出 Magic Packet 可以位于载荷中的任何位置。这意味着我们必须搜索每一个 Ethernet 帧来查找 Magic Packet。在我看来,这样做会降低 Wireshark 的性能,尤其是因为大多数流量并不包含 Magic Packet。因此,WakeOnLAN dissector 被实现为只解析 Magic Packet 的实际实现。截至撰写本文时,作者只知道 2 种实现,一种是 ether-wake,它使用 Ethertype 0x0842,遗憾的是这还不是已注册的 Ethertype;另一种实现是基于 UDP。
UDP:上述 Wikipedia 文章中提到的若干工具在 UDP 之上实现 Magic Packet。
一个物理 WakeOnLAN (Magic Packet) 将如下所示:
| 同步流 | 目标 MAC | 密码(可选) | 6 | 96 | 0、4 或 6
同步流定义为 6 字节的 FFh。
目标 MAC 块包含目标 IEEE 地址的 16 次重复,中间没有断开或中断。
密码字段是可选的,但如果存在,则包含 4 字节或 6 字节。WakeOnLAN dissector 的实现会在密码存在时按照 ether-wake 使用的命令行格式解析密码;因此,如果存在 4 字节密码,它会被解析为 IPv4 地址;如果存在 6 字节密码,它会被解析为 Ethernet 地址。
下面是一张 WakeOnLAN 流量的截图:
WOL dissector 对 Ethertype 0x0842 和 UDP 已完全可用。它最早从 2007 年 11 月 6 日的 Git commit 6785ffd7 开始包含在 Wireshark 中。Wireshark 0.99.7 版本开始正式提供。
目前,WOL dissector 没有首选项;不过,在某些情况下,你可能需要确保启用 UDP 的 “Try heuristic sub-dissectors first” 首选项,才能使 WOL 解析正常工作。启用这个 UDP 首选项时,请记住启发式方法并非万无一失,因此启用它可能会对其他协议的解析产生不利影响。请谨慎启用。
SampleCaptures 页面上提供了一个包含 WOL 流量的简单示例捕获文件。
完整的 WOL 显示过滤器字段列表可以在显示过滤器参考中找到
示例:仅显示基于 WOL 的流量:
wol按照 WOL 当前的实现方式,你可以使用以下捕获过滤器,以相当有把握地捕获大多数 WOL 流量;不过,为了保证捕获所有 WOL 流量,至少从 dissector 的角度来看,应在捕获过滤器表达式中省略 "port 9" 限定符:
ether proto 0x0842 or udp port 9有关 WakeOnLAN 的更多信息可以在 wikipedia 上找到。
AMD 白皮书也是一个极佳的信息来源。
导入自 https://wiki.wireshark.org/WakeOnLAN,时间为 2020-08-11 23:27:16 UTC