2009-06-07 39 views

回答

2

Wireshark將允許您檢查客戶端 - 服務器之間的通信(假設你在你的機器上運行其中的一個)。如果您想在自己的應用程序中執行此窺探,請查看WinPcap。能夠對協議進行逆向工程是另一種魚,頭腦。

1

一般來說,Wireshark是交通/協議分析 - 一個很好的建議,但是,您似乎在尋找別的東西:

例如,看一下網絡遊戲的客戶端/服務器通信,並得到項目信息並將其用於在第三方地圖上顯示位置等內容。

我假設您指的是多人遊戲和遊戲服務器?

如果是這樣,這些程序通常使用專用服務連接來查詢相應服務器的位置更新以及其他端口上的其他元信息,但它們實際上並不實際攔截或檢查客戶端/服務器通信,而且它們也不會真正干擾這些更新。因此,你會發現大多數遊戲服務器都支持非常簡單的被動連接(即僅輸出),這僅僅是爲了獲得某些運行時狀態,而這往往只是通過相應的外部腳本/網頁。

同樣,在不同的端口上還有一個專門的管理界面,還有另一個發佈服務器統計信息的界面,因此可以輕鬆查詢這些界面以便將整潔的統計信息嵌入到網頁中。

根據遊戲服務器的類型,這些可能會提供公開/匿名使用,或者他們可能需要某些憑據才能訪問此類數據端口。

更復雜的系統也將允許用戶訂閱只對特定狀態和更新,這樣就可以動態地配置你是什麼樣的數據感興趣的

所以,即使你在底層協議有完整的文檔,你不能在這些通信之間直接檢查客戶端/服務器通信。然而,這可能不容易實現。理論上,這基本上需要一個SOCKS代理服務器來建立和使用所有客戶端,這樣你才能真正檢查正在進行的通信。

像wireshark這樣的程序通常只會爲您自己的機器/網絡上的通信提供有用的信息,並且不會提供有關您無法訪問的計算機之間正在進行的通信的任何信息。

換句話說,即使你使用wireshark來a)逆向工程協議,b)想出了一種檢查流量的方法,c)創建一個位置圖 - 所有這些只會對你有權訪問,即在您自己的機器/網絡上進行的訪問。所以,相應的在線地圖只會顯示你自己的位置。

當然,還有一種選擇:您可以模擬一個客戶端,這樣您就可以從其他客戶端獲得服務器端更新,但這必須處於旁觀者模式。

這反過來會意味着你是一個消耗服務器端狀態但不提供任何服務器端狀態的被動客戶端。

因此,您可以反過來使用所有這些更新來填充在線地圖或將其用於您的任何其他想法。

然而,這需要你的觀衆/客戶端始終連接到服務器,可能會佔用寶貴的遊戲服務器插槽。

一些遊戲服務器提供專門的觀衆模式,以便您可以使用實時動態觀察整個遊戲。然而,大多數遊戲服務器會在特定的空閒超時後自動踢出觀衆。