我需要使用tcpdump过滤掉所有SSL数据包。我知道只有第一个数据包才能被识别为ssl。是否可以匹配第一个数据包,然后过滤掉其余的SSL流?
您也可以在tcpdump中过滤tcp流,这个站点解释了如何以这种方式使用tcpdump,我希望它有所帮助:tcpdump.org/tcpdump_man.html
你将不得不稍微调整它,但它应该工作。
此外,还有一个专门的SSL_DUMP utility
是的你可以。您可以按照以下命令过滤SSL
流量的第一个数据包,
方法1
[root@arif]# tcpdump -i eth0 src host 192.168.0.2 and dst host 40.113.200.201 and dst port 443 -c 1
哪里,
-i
:提到界面src host
:是你本地主机的ipdst host
:是目标主机的IPdst port
:是提供SSL
服务的目的港。您可以根据配置更改默认(443)端口。-c
:用于在收到计数包后退出tcpdump
。-c
标志是过滤的主要组成部分,因为此标志告诉tcpdump
在特定数据包计数后退出。在这里,我只使用1
在捕获一个(第一个)数据包后退出tcpdump
。
方法2
只有每次启动tcpdump
时,上述解决方案才有效。如果你想过滤掉每个SSL
流的唯一第一个数据包,那么按照下面的命令,
[root@arif]# tcpdump -li eth0 src host 192.168.0.2 and dst host 40.113.200.201 and port 443 and tcp[13] == 2
哪里,
l
:“使stdout行缓冲。如果你想在捕获它时看到数据,这很有用。”这将帮助您输出grep/tee/awk
。src
host
dst
host
:如果您不想指定源和目标IP,则可以忽略这些过滤。tcp[13] == 2
在TCP
标题octate no。 13
是用于设置标志的octate。要设置SYN
位,使用0 0 0 0 0 0 1 0
组合(请看下面的图表),即十进制2
。因此,这将帮助您仅过滤SYN
数据包,这是SSL
流的第一个数据包。 |C|E|U|A|P|R|S|F|
|---------------|
|0 0 0 0 0 0 1 0|
|---------------|
因此,上述配置应适用于大多数情况。