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

2024-01-24

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

我使用 PCap.Net 捕获数据包,在本例中为 UDP 数据包,我可以通过 (PcapDotNet.packets.Ethernet.IpV4.Udp) 从 PCap.net 对象访问这些数据包。

我如何获取结果(Udp 数据包)并解析它?特别是解绑 UDP 数据包中发生的 DNS 请求和响应。

有图书馆可以提供帮助吗?

EDIT:更具体地说,我想要做的是从 DNS 响应中提取 IP 地址,并根据使用 Wireshark 的检查,它将通过以下方式:

(a) 输入:作为 DNS 响应的 UDP 数据包的有效负载

(b) 处理:解析出UDP数据包的DNS响应部分。找到“答案”部分,在其中找到类型为 A(主机地址)[不是 CNAME 记录] 的答案记录,然后通过此答案记录获取 IP 地址。

(c) 返回:DNS 响应中的 IP 地址。


来自 PCAP.Net:

Pcap.Net.DevelopersPack.0.7.0.46671.x64\src\InterpretingThePackets\Program.cs

            // Compile the filter
            using (BerkeleyPacketFilter filter = communicator.CreateFilter("ip and udp"))
            {
                // Set the filter
                communicator.SetFilter(filter);
            }

            Console.WriteLine("Listening on " + selectedDevice.Description + "...");

            // start the capture
            communicator.ReceivePackets(0, PacketHandler);
    }


    // Callback function invoked by libpcap for every incoming packet
    private static void PacketHandler(Packet packet)
    {
        // print timestamp and length of the packet
        Console.WriteLine(packet.Timestamp.ToString("yyyy-MM-dd hh:mm:ss.fff") + " length:" + packet.Length);

        IpV4Datagram ip = packet.Ethernet.IpV4;
        UdpDatagram udp = ip.Udp;

        // print ip addresses and udp ports
        Console.WriteLine(ip.Source + ":" + udp.SourcePort+ " -> " + ip.Destination + ":" + udp.DestinationPort);
    }

还不够吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在.NET 中解析 UDP 数据包? 的相关文章

  • 静态类变量与外部变量相同,只是具有类作用域吗?

    在我看来 静态类变量与外部变量相同 因为你只需要declare它在static int x extern int x语句 并在其他地方实际定义它 通常在 cpp 文件中 静态类变量 h file class Foo static int x
  • Linux 中 AF_UNIX 数据报消息的最大大小是多少?

    目前我已达到 130688 字节的硬限制 如果我尝试在一条消息中发送更大的内容 我会收到一条消息ENOBUFS error 我已经检查过net core rmem default net core wmem default net core
  • 如何在编译C代码时禁用警告?

    我正在使用 32 位 Fedora 14 系统 我正在使用编译我的源代码gcc 有谁知道如何在编译c代码时禁用警告 EDIT 是的 我知道 最好的办法是修复这些警告以避免任何未定义 未知的行为 但目前在这里 我第一次编写了巨大的代码 并且在
  • 无法通过 HTTPS 调用 Web 服务

    我正在开发一个 Net 应用程序 它与 Web 服务通信以获取一些数据 Net 应用程序和 Web 服务之间的连接是通过 HTTPS 完成的 当我从 Net 应用程序调用 Web 服务时 我得到以下堆栈跟踪 System Net WebEx
  • 编译器错误“错误:在文件范围内可变地修改了‘字符串’”

    考虑 include
  • 无法加载文件或程序集“EntityFramework,版本=6.0.0.0”

    我究竟做错了什么 我该如何解决这个问题 我有一个包含多个项目的解决方案 它是一个 MVC NET 4 5 Web 应用程序 在调试模式下启动后调用其中一个项目时 出现此错误 导致此错误的项目具有以下参考 两个都是版本6 0 0 0 应用程序
  • 如何添加重试以调用 Web 服务?

    我有一个应用程序调用使用 wsHttpBinding 的 Web 服务 我需要在连接超时等情况下对 Web 服务调用实现某种重试功能 执行此操作的最佳方法是什么 我已经阅读过有关 WS ReliableMessaging 的内容 但这不是
  • 您可以在一个 Windows Azure 实例上部署多个 Web 应用程序吗?

    是否可以在一个 windows azure 小型计算实例中运行一堆 Web 应用程序 我正在考虑使用 Azure 作为放置一堆处于开发和非生产状态的项目 Web 应用程序 的地方 有些实际上已经被封存了 但我想在某个地方有一个活跃的实例 我
  • C#中Enum中定义的value__是什么

    What value 可能在这里 value MSN ICQ YahooChat GoogleTalk 我运行的代码很简单 namespace EnumReflection enum Messengers MSN ICQ YahooChat
  • dropdownlist DataTextField 由属性组成?

    有没有一种方法可以通过 C 使 asp net 中的下拉列表的 datatextfield 属性由对象的多个属性组成 public class MyObject public int Id get set public string Nam
  • 错误左值需要作为赋值C++的左操作数

    整个程序基本上只允许用户移动光标 如果用户位于给定的坐标范围 2 2 内 则允许用户键入输入 我刚刚提供了一些我认为足以解决问题的代码 我不知道是什么导致了这个问题 你能解释一下为什么会发生吗 void goToXY int int 创建一
  • 不兼容的类型 - 是因为数组已经是指针吗?

    在下面的代码中 我创建一个基于书籍结构的对象 并让它保存多个 书籍 我设置的是一个数组 即定义 启动的对象 然而 每当我去测试我对指针的了解 实践有帮助 并尝试创建一个指向创建的对象的指针时 它都会给我错误 C Users Justin D
  • 使用(linq to sql)更新错误

    我有两个表 通过外键 CarrierID 绑定 Carrier CarrierID CarrierName CarrierID 1 CarrierName DHL CarrierID 2 CarrierName Fedex Vendor V
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是
  • ASP.NET Core Razor Page 多路径路由

    我正在使用 ASP NET Core 2 0 Razor Pages 不是 MVC 构建系统 但在为页面添加多个路由时遇到问题 例如 所有页面都应该能够通过 abc com language 访问segment shop mypage 或
  • 在 C++ 和 Windows 中使用 XmlRpc

    我需要在 Windows 平台上使用 C 中的 XmlRpc 尽管我的朋友向我保证 XmlRpc 是一种 广泛可用的标准技术 但可用的库并不多 事实上 我只找到一个库可以在 Windows 上执行此操作 另外一个库声称 您必须做很多工作才能
  • C++ [Windows] 可执行文件所在文件夹的路径[重复]

    这个问题在这里已经有答案了 我需要访问一些文件fstream在我的 Windows 上的 C 应用程序中 这些文件都位于我的exe文件所在文件夹的子文件夹中 获取当前可执行文件的文件夹路径的最简单且更重要的 最安全的方法是什么 Use 获取
  • 如何设置 CMake 与 clang 交叉编译 Windows 上的 ARM 嵌入式系统?

    我正在尝试生成 Ninja makefile 以使用 Clang 为 ARM Cortex A5 CPU 交叉编译 C 项目 我为 CMake 创建了一个工具链文件 但似乎存在错误或缺少一些我无法找到的东西 当使用下面的工具链文件调用 CM
  • g++ C++0x 枚举类编译器警告

    我一直在将可怕的 C 类型安全伪枚举重构为新的 C 0x 类型安全枚举 因为它们是way更具可读性 不管怎样 我在导出的类中使用它们 所以我明确地将它们标记为导出 enum class attribute visibility defaul
  • FindAsync 很慢,但是延迟加载很快

    在我的代码中 我曾经使用加载相关实体await FindAsync 希望我能更好地遵守 C 异步指南 var activeTemplate await exec DbContext FormTemplates FindAsync exec

随机推荐

  • Html 选取框标签

    html marquee 标签是否已弃用 如果是 现代浏览器上有哪些替代方案 我想在我的 joomla 页面上创建一个简单的字幕效果 html marquee 标签是否已弃用 不 它首先必须成为语言的一部分才能被弃用 它只是专有的 如果是
  • 生成 macOS 框架时如何保留公共标头的目录布局

    我有一个 C 库的 CMake 项目 当前版本为 CMake v3 21 我正在将其移植到 macOS 并且我正在考虑将该库生成为操作系统框架 https developer apple com library archive docume
  • 如何使用 Automapper 映射复杂对象?

    我有几门课 public class Customer public string FirstName get set public string LastName get set public Product Product get se
  • 如何沿着时间线创建事件的可视化?

    我正在用 Python 构建可视化 我想在那里可视化加油站和我的汽车的燃油成本 此外 洗车及其成本以及维修都应该可视化 根据成本的不 同 燃料成本和洗衣成本应该有更高的标准 我创建了下面的可视化来描述这些概念 如何使用 matplotlib
  • 在 virtualenv 中找不到 Python 模块

    我无法让模块在我的虚拟环境中运行 以熊猫为例 随着虚拟环境的开启 我运行yolk l并返回 缩短版 basicpython xxxx LinuxBox pythonprojects basicpython yolk l Python 2 7
  • Pandas TypeError:无法转换为数字

    我正在开发一个项目 将数据从 SQL 导入到 pandas DataFrame 中 这似乎进行得很顺利 但是当我采取pandas mean 它抛出一个 TypeError 指出串联的值列表无法转换为数字 见下文 示例数据框 ProductS
  • POSIX 部分写入()

    如 SUSv4 或 POSIX 1 2008 中所述 http pubs opengroup org onlinepubs 9699919799 functions write html tag 16 685 08 http pubs op
  • C++ 使用类方法作为函数指针类型

    在 C 库中 有一个函数正在等待函数指针 这样 lasvm kcache t lasvm kcache create lasvm kernel t kernelfunc void closure 其中 lasvm kernel t 定义为
  • 除了 Tesseract 之外还存在哪些 OCR 选项? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 Tomcat 上运行的 servlet 进行文件 I/O

    我正在编写一个 Java servlet 使用 Tomcat 作为容器 它创建 PDF 文件并向最终用户提供服务 目前 PDF 文件是在内存中创建的 并作为对 POST 的响应写出 我想对此进行一些更改 以便将 PDF 文件写入磁盘 以便稍
  • Django 'pip install django-heroku'(psycopg2) 错误阻止部署到 Heroku

    我正在设置一个新的 Django 项目以在 Heroku 上部署 但是当我遵循 Django Heroku 部署指南时 我在 pip install django heroku 期间遇到错误 我正在运行 OS MacOS Mojave 10
  • 如果解决失败则重定向 Angular 2

    如果 Angular 2 中解析失败 如何重定向到另一个页面 我将此称为编辑页面的解析 但我想处理解析页面中的错误 我的决心 resolve route ActivatedRouteSnapshot Promise
  • 闪亮的反应功能没有按预期更新

    原始问题发布在这里 闪亮的反应性意外行为 https stackoverflow com questions 27478028 shiny reactive unexpected behavior该问题被重新发布在这里 试图改进之前在上面提
  • 绘制给定预先计算的计数和箱的直方图

    我有一些数据x我传递给numpy histogram x 获取计数和 bin 边缘 然后我将它们保存到文件中 稍后 我想加载此数据并绘制直方图 I have counts 20 19 40 46 58 42 23 10 8 2 bin ed
  • 在 R 中拟合非线性 Langmuir 等温线

    我想在 R 中为以下数据拟合等温模型 最简单的等温模型是此处给出的 Langmuir 模型型号在页面底部给出 http www alfisol com IFS IFS 003 LMMpro Langmuir php 下面给出了我的 MWE
  • 使用 Visual Basic 自动登录表单

    我需要使用 Visual Basic 10 0 创建一个自动登录表单应用程序 代码如下 table cellpadding 0 cellspacing 0 border 0 height 100 tr td width 50 height
  • 在 iPhone 中创建基于时间的提醒应用程序

    我正在开发基于时间的提醒应用程序 用户在其中输入他的提醒和提醒时间 问题是如何不断地将当前时间与用户定义的时间进行比较 任何示例代码都会有很大帮助 因为我被困在这一点上 将当前时间与用户定义的时间进行比较并不是正确的设计模式 UIKit 提
  • 导航组件防止在后按时重新创建片段

    我在项目中使用 Jetpack 导航组件 其中包含单个活动和一些片段 我有一个带有从服务器端填充的列表的片段 我打电话getDataFromServer on the onViewCreated然后 当用户单击某个项目时 会显示一个新片段
  • 在 Excel 中将超链接转换为 HTML 代码

    我的 Excel 文件中有一列超链接 我想将它们转换为各自的 HTML 代码 a href http www example com Link Name a 我找到了仅提取链接 作为文本 的方法 但我需要将整个 HTML 代码作为文本来替换
  • 如何在.NET 中解析 UDP 数据包?

    如何在 NET 中解析 UDP 数据包 我使用 PCap Net 捕获数据包 在本例中为 UDP 数据包 我可以通过 PcapDotNet packets Ethernet IpV4 Udp 从 PCap net 对象访问这些数据包 我如何