深度数据包检查以检测 WOL

深度数据包检查以检测 WOL

我想监听 WOL(局域网唤醒)数据包。
由于 WOL 数据包可以是 UDP/TCP/任何协议(是的,甚至是 TCP,但可能没用),因此我必须检查每个传入数据包的 WOL 特定模式。

这不能直接使用 netfilter 完成,因为模式是 6xFF + 16xtarget-MAC-address(因此我们有 96 个可变字节)。

我发现的工具可以检测很多协议,但没有一个能够检测 WOL。

您是否知道检查每个数据包并在检测到特定模式时运行脚本的简单方法?

答案1

使用ngrep,您可以执行以下操作:

ngrep '\xff{6}(.{6})\1{15}'

匹配 0xff 6 次,后跟任意 6 个字节,再后跟同样的 6 个字节重复 15 次。我确认与 生成的数据包匹配wakeonlan

ngrep具有对脚本编写有用的选项(例如,-W single每个匹配的数据包有一行、-l击败缓冲、-t时间戳、-q静音其他输出)。

相关内容