我想知道如何拦截某个应用程序发送的数据包,然后检查这些数据包包含的内容。我需要一些建议,因为我从来没有做过这样的事情,我想自己学习。
3 回答
Pcap.Net
Pcap.Net 是用 C++/CLI 和 C# 编写的 WinPcap 的 .NET 包装器。它具有几乎所有 WinPcap 功能,并包括一个数据包解释框架。
SharpPcap
SharpPcap 是一个跨平台的.NET 环境数据包捕获框架,基于著名的 pcap / WinPcap 库。它提供了一个 API,用于使用任何 .NET 语言(例如 C# 和 VB.NET)来捕获、注入、分析和构建数据包。
Pcap.Net 和 SharpPcap 的比较
线鲨
它用于网络故障排除、分析、软件和通信协议开发以及教育。而且我认为它是我迄今为止使用的最通用的数据包嗅探器。
提琴手
Fiddler 是一个 Web 调试代理,它记录您的计算机和 Internet 之间的所有 HTTP(S) 流量。Fiddler 允许您检查流量、设置断点以及“摆弄”传入或传出数据。Fiddler 包括一个强大的基于事件的脚本子系统,并且可以使用任何 .NET 语言进行扩展。最近 Fiddler 已被 Telerik 超越。但它仍然是免费的 AFAIK。
c# 嗅探器套接字创建的一些示例。
mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw,
ProtocolType.IP);
// Bind the socket to the selected IP address
mainSocket.Bind(newIPEndPoint(IPAddress.Parse(cmbInterfaces.Text),0));
// Set the socket options
mainSocket.SetSocketOption(SocketOptionLevel.IP, //Applies only to IP packets
SocketOptionName.HeaderIncluded, //Set the include header
true); //option to true
byte[] byTrue = newbyte[4]{1, 0, 0, 0};
byte[] byOut = newbyte[4];
//Socket.IOControl is analogous to the WSAIoctl method of Winsock 2
mainSocket.IOControl(IOControlCode.ReceiveAll, //SIO_RCVALL of Winsock
byTrue, byOut);
//Start receiving the packets asynchronously
mainSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None,
newAsyncCallback(OnReceive), null);
您可以使用 Fiddler 查看 HTTP 流量http://www.fiddler2.com/fiddler2/。
或者 Wireshark http://www.wireshark.org/获取更高级的东西
数据包分析器摘要在这里http://en.wikipedia.org/wiki/Packet_analyzer
您想要达到的目标的更多细节将有助于我们提供建议。