我正在尝试创建一个 bash 脚本来检测取消身份验证攻击(我在 Mac 上)。虽然我知道该命令:
$ tcpdump -l -I -i en0 -e -s 256 type mgt subtype deauth
将检测解除身份验证数据包,我还想同时检测解除关联数据包。通常,您可以通过以下方式检测解除关联数据包:
$ tcpdump -l -I -i en0 -e -s 256 type mgt subtype disassoc
但是,我想知道是否有某种方法可以操纵此命令以同时扫描解除关联和解除身份验证数据包?例如命令:
$ tcpdump -l -I -i en0 -e -s 256 type mgt subtype deauth disassoc
显然不会起作用,但我希望这可以帮助您了解我的要求。
此外,我完全理解只需使用命令:
$ tcpdump -l -I -i en0 -e -s 256 type mgt
将向我显示所有管理帧,包括解除关联和解除身份验证数据包,但会被其他不相关的帧(如信标、探测请求等)堵塞。
事实上,我知道一个简单的grep
实现可以删除几乎所有不需要的数据包,只留下解除关联和解除身份验证数据包,但我觉得这是一种相当笨拙的方法,并且需要更多、低效的 bash 计算时间来尝试并解析空中飞行的每一个管理框架的每一行。
有没有一种简单的方法来修改上述tcpdump
命令以使其检测我想要的两种数据包类型?或者我是否必须寻找一种不同类型的解决方案,就像grep
我上面提到的那样?
PS 我使用的是 OSX 而不是 Linux。
答案1
如中所述tcpdump 联机帮助页,您可以将过滤器与关键字and
、or
、 和结合起来not
。您可以使用括号进行分组(请注意,为了让您的 shell 正确解析命令行,您可能需要引号):
tcpdump -l -I -i en0 -e -s 256 'type mgt and (subtype deauth or subtype disassoc)'