web-dev-qa-db-ja.com

SSLパケットの詳細をtsharkで印刷する方法は?

SSLクライアントとサーバーの間の簡単な交換(opensslのs_clientおよびs_server、正確には)を収集し、tsharkを使用してpcapファイルのssl部分を表示したいと考えています。暗号化された部分を復号化する必要はありませんが、少なくとも暗号化されていないフィールドの値を知りたいです。

ファイルをサーバーからデスクトップにコピーするとき、pshファイルをWiresharkで開いて、デフォルトでフィールドを表示できます。

wireshark output

一方、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.pcaptshark -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エラーを表示します

tsharkを使用して、SSLパケットのSSLパケットの詳細をどのように出力しますか?

4
vasilyrud

最後に機能したのは、-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
4
vasilyrud