有没有一种简单的方法来过滤 Wireshark 中的 TLS 1.3 数据包?
tls.record.version
将不起作用,因为它通常包含0x0303
(TLS 1.2) 的值。
我假设 Wireshark 通过查看 ServerHello 消息中的 SupportedVersions 扩展来识别 TLS 1.3,如果版本是0x0304
(TLS 1.3),它可能会将协议应用于整个 TLS 流。
TLSv1.3
显示在“协议”列中,但我不确定应用哪个显示过滤器来过滤这些数据包。
鉴于 TLSv1.3 出于兼容性原因试图伪装成 TLSv1.2,因此 TLSv1.3没有简单的过滤器。
当前为 2020-10-05(Wireshark 可能会在某个时候添加此内容)
在 Wireshark 中,您可以通过右键单击流中的数据包然后添加&& tls
以仅查看流中的 TLSv1.3 数据包(tcp 数据包将显示在流中)来跟踪此 TLSv1.3 流。总之,这应该是类似的东西tcp stream eq 0 && tls
。
您可以使用此 bash 脚本轻松找到此显示过滤器:
#!/bin/bash
filename=YOUR_PCAP.pcap
tcp_streams="$(tshark -r $filename -T fields -e tcp.stream \
-Y 'tls.handshake.extensions.supported_version == 0x0304' | sort | uniq)"
display_filter="tls && ("
first_stream="true"
for s in $tcp_streams; do
if [ $first_stream == "true" ]; then
first_stream="false"
else
display_filter+=" || "
fi
display_filter+="tcp.stream eq $s"
done
display_filter+=")"
printf "Display filter for TLSv1.3:\n$display_filter\n"
在这里,我们
tls && ($stream1 || $stream 2 || ...)
根据在 Wireshark 论坛上提出的相同问题,有一个lua 脚本可以完成与此 bash 脚本相同的工作。这是 Wireshark 文档的一部分,作为示例代码提供,您可以根据需要进行修改。