我收集了 SSL 客户端和服务器(确切地说是openssls_client
和)之间的简短交换,并希望使用 查看 pcap 文件的 ssl 部分。我不需要解密加密部分,但至少想知道未加密字段中的值。s_server
tshark
将文件从服务器复制到我的桌面时,我可以使用 Wireshark 打开 pcap 文件并默认查看字段:
另一方面,tshark -r tls_dump.pcap
仅显示数据包的 TCP 部分。例如,对于同一个数据包:
4 0.000069237 127.0.0.1 → 127.0.0.1 TCP 373 54312 → 44330 [PSH, ACK] Seq=1 Ack=1 Win=43776 Len=307 ...
tcpdump -U -i lo 'port 44330' -w tls_dump.pcap
我尝试使用和使用收集数据包tshark -nn -i lo -s 0 -w tls_dump.pcap port 44330
(因为这里),但是尝试查看数据包时结果是一样的。
tshark
我尝试过的选项:
-2
没有效果-2R "ssl"
沒有顯示任何内容-Y "ssl"
沒有顯示任何内容-o "ssl.desegment_ssl_records: TRUE" -o "ssl.desegment_ssl_application_data: TRUE"
没有效果-T json
仅显示未解释的原始 TCP 负载数据-V
仅显示未解释的原始 TCP 负载数据--print
没有效果--enable-protocol "ssl"
没有效果--enable-heuristic "ssl"
给了我一个No such protocol ssl, can't enable
错误
如何输出 SSL 数据包的 SSL 数据包详细信息tshark
?
答案1
最终有效的是使用指定端口-d tcp.port==44330,ssl
,因此我的完整命令是:
tshark -r tls_dump.pcap -d tcp.port==44330,ssl
之所以需要这样做,是因为 Wireshark 中存在一些特定于版本的差异。我的桌面有版本2.6.0
,它能够自动检测 SSL 协议。服务器有版本2.4.6
,它无法检测 SSL,需要指定端口号。
只能打印 SSL 数据包:
tshark -r tls_dump.pcap -d tcp.port==44330,ssl -2R "ssl"
仅限 JSON 格式的 SSL 数据包:
tshark -r tls_dump.pcap -d tcp.port==44330,ssl -2R "ssl" -T json