2014-09-23 79 views
1

我已经创建了一个检索使用这个例子中的网络数据包的应用程序:http://www.codeproject.com/Articles/4217/Packet-Sniffing-with-Winpcap-Functions-Ported-to-a数据包内容的二进制阅读器?

我的目的是为了获取发送到从服务器的特定应用程序的特定数据包的内容来使用它,我不感兴趣任何其他数据包。我感兴趣的数据包是定期更新的1个值。

我把它转换为VB.NET中,因为这是我的偏好,所以我会给出我的代码片段在VB,但我可以理解C#以及可以随意给使用C#的例子。

它有一个事件包含所接收的分组中的字节数组的内容的参数“s”的。

我转换该数组具有一个二进制读取像这样读:

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“变量作为当前位置,由数据类型递增的当前字节。 (我爱:东西= reader.ReadString()POS + = something.Length)

我唯一的问题是:我不知道我应该寻找什么类型的?包的结构是什么?是否有可能检索发送数据包的服务器以及它发送到的应用程序?

之前使用这样的数据包我从来没有尝试过,我只经历过一个从自定义格式的数据库文件中获取数据。


编辑:我发现其中有文件,说明有关的源/目的IP,以及如何通过它们来过滤一些更有益的,它看起来是一个很多比前面提到上面的例子更完整。

http://www.codeproject.com/Articles/12458/SharpPcap-A-Packet-Capture-Framework-for-NET

虽然它仍然没有给出如何理解数据包的内容本身的解释,但能够过滤数据包是一个很大的帮助。

+0

坦率地说,'BinaryReader'的主要用途是读取用'BinaryWriter'编写的数据。由于这不是这种情况:*忘记'BinaryReader' * - 它不会帮助你。 – 2014-09-23 09:49:08

回答

0

有许多不同类型的可能的网络数据包 - 大多数都有详细记录。

什么你想要做的就是下载Wireshark的(微软也有一个类似的工具,它的名字我想不起来了现在),运行一些捕获了,并且看日志。

Wireshark的认识几乎存在每一个现有的网络数据包,这样你就可以使用它的日志来确定你需要什么类型的数据包,以能够识别,然后谷歌为它的规范。