我创建了一个使用此示例检索网络数据包的应用:http://www.codeproject.com/Articles/4217/Packet-Sniffing-with-Winpcap-Functions-Ported-to-a
我的目的是使用它来获取从服务器发送到特定应用程序的特定数据包的内容,我对任何其他数据包都不感兴趣。我感兴趣的包是1个值,它定期更新。
我将它转换为VB .Net,因为这是我的偏好,所以我会在VB中提供我的代码片段,尽管我也能理解C#,所以请随意使用C#提供示例。
它有一个带参数'的事件。其中包含字节数组中接收到的数据包的内容。
我正在使用二进制阅读器将该数组转换为读取:
Dim stream As System.IO.MemoryStream = New System.IO.MemoryStream(s)
Dim reader As New System.IO.BinaryReader(stream)
Dim pos As Long = 0
Dim length As Long = reader.BaseStream.Length
然后,我将通过' pos'变量作为当前位置,以当前字节的数据类型递增。 (喜欢:something = reader.ReadString()pos + = something.Length)
我唯一的问题是:我不确定我应该寻找什么类型?什么是'结构'一包?是否可以检索发送数据包的服务器以及发送给它的应用程序?
我以前从来没有尝试过使用类似的东西,但我只有从自定义格式数据库文件中获取数据的经验。
编辑:我发现了一些更有用的东西,其中包含有关源/目标IP以及如何通过它们进行过滤的文档,它看起来比上面提到的上述示例要完整得多。
http://www.codeproject.com/Articles/12458/SharpPcap-A-Packet-Capture-Framework-for-NET
虽然它仍然没有解释如何理解数据包内容本身,但能够过滤数据包是一个很大的帮助。
答案 0 :(得分:0)
有许多不同类型的可能网络数据包 - 大多数都有详细记录。
你要做的是下载Wireshark(微软也有一个类似的工具,其名称现在让我失望),运行一些捕获,并查看日志。
Wireshark几乎可识别现有的每个现有网络数据包,因此您可以使用其日志来确定您需要识别的数据包类型,然后根据其规范进行谷歌搜索。