如何使用 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
更多内容请参阅:
以下示例命令可帮助您以人类可读的格式捕获 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 手册页更多细节。