[英]Why does tcpdump capture only half the packets that is received by the filter?
[英]tcpdump to filter ssl packets
我需要使用tcpdump过滤掉所有SSL数据包。 我知道只有第一个数据包可以被识别为ssl。 是否有可能与第一个数据包匹配,然后过滤掉其余的SSL流?
您也可以在tcpdump中过滤tcp流,此站点说明了如何以这种方式使用tcpdump,希望对您有所帮助: tcpdump.org/tcpdump_man.html
您将不得不对其进行一些调整,但是它应该可以工作。
另外,还有一个专用的SSL_DUMP实用程序
是的你可以。 您可以按照以下命令过滤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
:是您本地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和目标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|
|---------------|
因此,以上配置适用于大多数场景。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.