如何使用SharpPcap从TCPPacket获取数据

本文关键字:获取 数据 TCPPacket 何使用 SharpPcap | 更新日期: 2023-09-27 18:10:23

我的报告需要一个小嗅探器,所以我使用c#和SharpPcap。

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

我有包含所有数据包数据的原始数据包。然后我用一些信息,如源/目的地/协议等,得到数据包。在那之后我得到tcp数据包。

现在我如何获得软件发送/接收的实际数据包数据?

如何使用SharpPcap从TCPPacket获取数据

很简单。

packet.PayloadPacket.PayloadPacket.PayloadData

tcpPacket。PayloadData或PayloadPacket应该是你想要的。如果是Packet,则PayloadData有效。Net不知道如何将数据解析成子数据包,如果知道,PayloadPacket是有效的。我不确定今天是否发生任何tcp数据包解析,所以你应该安全地说tcpPacket.PayloadData。

也许api应该改变,这样PayloadData总是tcp数据包中的原始数据,PayloadPacket是空的或非空的,这取决于数据包的内容是否被解析。然后,您可以通过使用PayloadData获得任何数据包,以太网,IP等的内容。想法吗?

可以引用一些'packet'的嵌套的PayloadPacket,但是很难知道这个包是如何构造的。是以太网->IP->Tcp还是以太网数据包周围有包装器?使用TcpPacket.GetEncapsulated()可以为您处理这些情况。

克里斯

SharpPcap/Packet的作者。净