使用 tshark 嗅探 SSL 握手

使用 tshark 嗅探 SSL 握手

如何使用 tshark 获取可读格式的 SSL 握手转储?我需要将其提供给供应商,以调试失败的 SSL 握手问题。

这需要在 tshark 中完成,而不是 wireshark,因为它是在没有 GUI 的远程服务器上完成的。

答案1

像这样。

tshark -nn -i <interface> -s 0 -w mycapture.pcap <hostname> and port <portnumber>

替换<interface>为要捕获的接口名称(例如eth0)。替换<hostname>为要捕获数据包的远程主机的名称或 IP 地址。替换<portnumber>为服务正在运行的端口(可能是443)。

您也可以改用tcpdump。Wireshark 和 都tcpdump使用 libpcap 进行捕获,因此您将捕获完全相同的信息。您还可以复制生成的文件并在另一台计算机上的 Wireshark 中打开它。

tcpdump和的命令行标志tshark足够接近,在大多数情况下它们可以互换使用。

答案2

假设您已经知道如何使用 tshark 过滤器,只需提供以下显示过滤器:

ssl.handshake.type == 1

如果您想要所有 ssl 流量,只需将其ssl作为过滤器即可。

您不能在捕获过滤器中直接使用这些,因为捕获过滤机制不知道有效负载是否是 ssl。

或者,如果您知道 SSL 流量通过哪个端口,则可以对该端口使用捕获过滤器,例如,如果 SSL 流量在端口 443 上进行,则使用过滤器port 443

更多内容请参阅:

  1. 这里有更详尽的 ssl 显示过滤器列表。

  2. 如何使用捕获过滤器捕获 SSL

以下示例命令可帮助您以人类可读的格式捕获 SSL 流量并将其放入文件中:

tshark -i <interface> -c <no. of packets to capture> -V -R "ssl" > capturefile.txt

或者使用捕获过滤器

tshark -i <interface> -c <no. of packets to capture> -V -f "port 443" > capturefile.txt

另请参阅tshark 手册页更多细节。

相关内容