Tag: pcap.net

如何在.NET中解析UDP数据包?

如何在.NET中解析UDP数据包? 我正在使用PCap.Net来捕获数据包,在这种情况下是UDP数据包,我可以通过(PcapDotNet.packets.Ethernet.IpV4.Udp)从PCap.net对象访问它。 我如何获取结果,Udp数据包,并解析这个? 特别是解封在UDP数据包中发生的DNS请求和响应。 有没有可以帮助的图书馆? 编辑 :更具体地说,我希望能够做的是从DNS响应中提取IP地址,并根据使用Wireshark的检查,它将通过: (a)输入:作为DNS响应的UDP数据包的有效负载 (b)处理:解析UDP数据包的DNS响应部分。 找到答案部分,在此查找答案记录,其类型为A(主机地址)[不是CNAME记录],然后使用此答案记录获取IP地址。 (c)返回:DNS响应的IP地址。

将字节数组转换为托管结构

更新:这个问题的答案帮助我在GitHub上编写了开源项目AlicanC的Modern Warfare 2 Tool 。 您可以看到我如何在MW2Packets.cs中读取这些数据包以及我编写的扩展,以读取Extensions.cs中的大端数据。 我在我的C#应用​​程序中使用Pcap.Net捕获“ 使命召唤:现代战争2”的 UDP数据包。 我从库中收到一个byte[] 。 我试图像字符串一样解析它,但是效果不好。 我有的byte[]有一个通用包头,然后是另一个特定于包类型的头,然后是关于大厅中每个玩家的信息。 一个乐于助人的人为我检查了一些数据包并想出了这些结构: // Fields are big endian unless specified otherwise. struct packet_header { uint16_t magic; uint16_t packet_size; uint32_t unknown1; uint32_t unknown2; uint32_t unknown3; uint32_t unknown4; uint16_t unknown5; uint16_t unknown6; uint32_t unknown7; uint32_t unknown8; cstring_t packet_type; // \0 terminated string }; // Fields are […]