5

レポート用に小さなスニファーが必要なので、C# と SharpPcap を使用しました。

packet = Packet.ParsePacket(rawCapture.LinkLayerType, rawCapture.Data);
tcpPacket = TcpPacket.GetEncapsulated(packet);

すべてのパケットデータを含む生のパケットがあります。次に、ソース/宛先/プロトコル/などの情報を含むパケットを取得します。その後、そこからtcpパケットを取得します。

ソフトウェアが送受信した実際のパケット データのみを取得するにはどうすればよいですか?

4

2 に答える 2

10

十分に単純でした。

packet.PayloadPacket.PayloadPacket.PayloadData
于 2011-10-05T01:33:06.857 に答える
3

tcpPacket.PayloadData または PayloadPacket が必要です。PayloadData は、Packet.Net がデータをサブパケットに解析する方法を認識していない場合に有効であり、PayloadPacket は認識している場合に有効です。今日、tcp パケットの解析が行われるかどうかはわかりません。

PayloadData が常に tcp パケットの生データであり、PayloadPacket がパケットの内容が解析されたかどうかに応じて null または非 null になるように、API を変更する必要があるかもしれません。次に、PayloadData を使用して、任意のパケット、イーサネット、IP などのコンテンツを取得できます。考え?

「packet」のネストされた PayloadPacket を参照できますが、パケットがどのように構築されているかを知ることは困難です。Ethernet->IP->Tcp ですか、それとも Ethernet パケットの周りにラッパーがありますか? TcpPacket.GetEncapsulated() を使用すると、これらの状況が処理されます。

クリス

SharpPcap/Packet.Net の作成者

于 2011-10-05T13:54:11.617 に答える