gpt4 book ai didi

c# - 使用 PcapDotNet,如何提取最终有效载荷?

转载 作者:行者123 更新时间:2023-11-30 21:40:09 26 4
gpt4 key购买 nike

我有一个 C# 应用程序,它使用 PcapDotNet 通过捕获过滤器嗅探 UDP 数据包。

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

数据报有一个 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 可用于解析、显示或以其他方式使用负载。

关于c# - 使用 PcapDotNet,如何提取最终有效载荷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44825933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com