17

我想知道如何拦截某个应用程序发送的数据包,然后检查这些数据包包含的内容。我需要一些建议,因为我从来没有做过这样的事情,我想自己学习。

4

3 回答 3

22

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。

于 2012-09-15T13:22:52.397 回答
6

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);
于 2012-09-15T13:32:51.690 回答
2

您可以使用 Fiddler 查看 HTTP 流量http://www.fiddler2.com/fiddler2/

或者 Wireshark http://www.wireshark.org/获取更高级的东西

数据包分析器摘要在这里http://en.wikipedia.org/wiki/Packet_analyzer

您想要达到的目标的更多细节将有助于我们提供建议。

于 2012-09-15T13:16:33.943 回答