,你如何提取最终的有效载荷?

,你如何提取最终的有效载荷?

问题描述:

我有一个C#应用程序,它使用PcapDotNet通过捕获过滤器来嗅探UDP数据包。,你如何提取最终的有效载荷?

工作正常,有一个6字节的有效负载,但我似乎无法将其解压为字节数组。 UdpDatagram.Payload是一个数据报,没有方法来提取实际的有效载荷数据。

Datagram有一个ExtractPayload(),但是这给了一个ILayer,我似乎无法使用它来获得有效载荷。

如何从TcpDatagram或UdpDatagram提取最终有效载荷?

PacketCommunicator.ReceivePacket()将数据包后,然后使用Datagram.ToMemoryStream()写到本地缓冲器:

Packet wpacket; 

// wpacket = received packet 

UdpDatagram udp = null; 
TcpDatagram tcp = null; 
Datagram datagram = null; 

IpV4Datagram ip4 = wpacket.Ethernet.IpV4; 
if (ip4.Protocol == IpV4Protocol.Udp) 
{ 
    udp = ip4.Udp; 
    datagram = udp.Payload; 
} 
if (ip4.Protocol == IpV4Protocol.Tcp) 
{ 
    tcp = ip4.Tcp; 
    datagram = tcp.Payload; 
} 
if (null != datagram) 
{ 
    int payloadLength = datagram.Length; 
    using (MemoryStream ms = datagram.ToMemoryStream()) 
    { 
     byte[] rx_payload = new byte[payloadLength]; 
     ms.Read(rx_payload,0, payloadLength); 
    } 
} 

然后rx_payload可用于解析,显示或以其他方式使用的有效负载。