C#中的UDP数据包捕获
Wireshark 在我的 LAN 中捕获 UDP 数据包,详细信息如下,
Source IP 192.168.1.2
Destination IP 233.x.x.x
Source Port 24098
Destination Port 12074,12330
我如何在 C# 中捕获它?
Wireshark captures UDP packets in my LAN with follwoing details
Source IP 192.168.1.2
Destination IP 233.x.x.x
Source Port 24098
Destination Port 12074,12330
how can i capture it in c#?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我自己解决了
这是我的工作代码
Solved it myself
Here is my working code
Winpcap 库是实现此目的的最佳方法之一。我有使用 C# 执行此操作的经验,并且使用这个库非常容易。
此项目展示了如何使用 C# 执行此操作。
The Winpcap library is one of the best ways to do this. I have experience in doing this in C# and it was really easy to work with this library.
This project shows how to do it with C#.
Wireshark 实际上使用 Winpcap 来执行此操作,正如其他答案所示,您也可以使用它。
您还可以使用 System.Net.Sockets.Socket 类并将其置于混杂模式。我用它来捕获来自给定网络接口的 IP 流量(例如 TCP 和 UDP)。这是一个例子。
现在套接字已创建并配置完毕,您可以使用 Receive() 方法开始接收数据。每次调用
Receive()
时,返回的缓冲区将包含一个IP数据包。请参阅此处了解 IPv4 标头的详细信息,此处 为 UDP 标头,以及 这里为 TCP 标头。如果 IP 标头的协议字段包含值 17,则您有一个 UDP 数据包。注意 Windows 上的原始套接字要求您是本地系统的管理员。此MSDN 文章中包含以下语言。
Wireshark actually uses Winpcap to do this, and as the other answer indicates, you can use it as well.
You can also use the
System.Net.Sockets.Socket
class and place it in promiscuous mode. I use this to capture the IP traffic (e.g., TCP and UDP) from a given network interface. Here's an example.Now that the socket is created and configured, you can use the
Receive()
method to start receiving data. Each time you callReceive()
, the returned buffer will contain an IP packet. See here for the breakout of the IPv4 header, here for the UDP header, and here for the TCP header. If the Protocol field of the IP header contains a value of 17, then you have a UDP packet.NOTE Raw sockets on Windows require that you be an administrator on your local system. The following language is contained in this MSDN article.
为了在 C# 中使用 WinPcap 进行原始数据包捕获,您可以尝试 Pcap.Net。
它是 C++/CLI 和 C# 中 WinPcap 的包装器,用于轻松捕获(嗅探)和注入原始数据包,它还包含一个易于使用的数据包解释框架。
In order to use WinPcap for raw packet capturing in C#, you can try Pcap.Net.
It is a wrapper for WinPcap in C++/CLI and C# for easily capturing (sniffing) and injecting raw packets and it also contains an easy to use packets interpretation framework.
在 https://github.com/PcapDotNet 中使用 Pcap.Net
具体示例:https://github.com/PcapDotNet/Pcap.Net/wiki/Pcap .Net-Tutorial-Interpreting-the-packets
Using Pcap.Net in https://github.com/PcapDotNet
Especific exemple: https://github.com/PcapDotNet/Pcap.Net/wiki/Pcap.Net-Tutorial-Interpreting-the-packets