我需要使用tcpdump过滤掉所有SSL数据包。我知道只有第一个数据包才能被识别为ssl。是否可以匹配第一个数据包,然后过滤掉其余的SSL流?
答案 0 :(得分:2)
你也可以在tcpdump中过滤tcp流,这个站点解释了如何以这种方式使用tcpdump,我希望它有所帮助:tcpdump.org/tcpdump_man.html
你必须稍微调整一下,但它应该有效。
此外,还有专门的SSL_DUMP utility
答案 1 :(得分:0)
是的,可以。您可以按照以下命令过滤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
:是您的本地主机的IP地址dst host
:是目标主机的IP地址dst 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
:“对标准输出行进行缓冲。如果要在捕获数据时查看数据,则很有用。”这将帮助您grep/tee/awk
输出。
src
host
dst
host
:如果不想指定源和目标ip,则可以忽略这些过滤。
tcp[13] == 2
在TCP
标头中以八位数字编号。 13
是用于设置标志的八位字节。要设置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|
|---------------|
因此上述配置适用于大多数场景。