ddddddO / packemon

Packet monster (っ‘-’)╮=͟͟͞͞◒ ヽ( '-'ヽ) TUI tool and Go library for sending packets of arbitrary input and monitoring packets on any network interfaces (default: eth0).
BSD 2-Clause "Simplified" License
73 stars 0 forks source link

[TLS1.2] server hello / certificate / server hello done #64

Closed ddddddO closed 1 week ago

ddddddO commented 1 week ago

以下のパターンで server から返されてるようで、後者がパースできてない、よう?

Wireshark 上では、reassembled TCP と出てて、どうやら mtu(mss) オーバーでパケットが分割された可能性があるよう?


後者の2パケットパターン、Wireshark で見てみると、Server Hello と Certificate / Server Hello Done でレコード分かれて表示されているが、Server Hello の詳細を見てみると、Certificate のパケットが含まれているように見える


https://github.com/ddddddO/packemon/issues/63 が起こってるのは、2パケットパターンの時 たぶんちゃんとパースできてない?

コードコメントに残したが、https://github.com/ddddddO/packemon/blob/cf04a74af75c90d80702685453a969c5bbd447e4/internal/debugging/send_tcp3way_tlshandshake.go#L108 の server hello受信があったらそのままパケット受信処理して、2つのtcp dataくっつけて後続のパース処理呼べば解決しそう

ddddddO commented 1 week ago

mtu / mss 超えで tcp のセグメントが送信側で分割されたとき、最初のパケットは ack にしないとダメ、みたいな RFC なり説明どこかにあるか調べる

ddddddO commented 1 week ago

対応した

https://github.com/ddddddO/packemon/commit/a170d5b8093d7e39b28bc129d9f9df10dd5319af