4

我需要使用 tcpdump 过滤掉所有 SSL 数据包。我知道只有第一个数据包可以被识别为 ssl。是否可以匹配第一个数据包,然后过滤掉 SSL 流的其余部分?

4

2 回答 2

2

You can filter a tcp stream in tcpdump too, this site explains how to use tcpdump in this way, I hope it helps: tcpdump.org/tcpdump_man.html

You will have to tweak it a bit, but it should work.

Also, there is a dedicated SSL_DUMP utility

于 2011-11-27T15:28:15.107 回答
0

是的你可以。您可以按照以下命令过滤第一个SSL流量包,

方法一

[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 portSSL: 是提供服务的目的端口。您可以根据您的配置更改默认 (443) 端口。
  • -c: 用于tcpdump收到count个包后退出。

-c标志是过滤的主要组成部分,因为此标志告诉tcpdump在特定数据包计数后退出。在这里,我习惯于在仅捕获一个(第一个)数据包后1退出。tcpdump

方法二

上述解决方案只有在您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] == 2TCP标题八进制数中。13是用于设置标志的八进制数。使用十进制设置SYN0 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|
 |---------------|

所以上面的配置应该适用于大多数场景。

于 2019-03-17T21:02:13.310 回答