2014-09-23 30 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的認識幾乎存在每一個現有的網絡數據包,這樣你就可以使用它的日誌來確定你需要什麼類型的數據包,以能夠識別,然後谷歌爲它的規範。