2009-09-17 110 views
4

有一個有趣的問題。我有一個通過客戶端應用程序(而不是瀏覽器)運行的角色扮演MMOG,它將我的播放器的操作發送到服務器,通過發回數據包來保持所有播放器同步。理解/逆向工程頂層網絡協議的好工具

現在,遊戲使用TCP/IP上的頂層協議來發送數據。然而,wireshark不知道正在使用什麼協議,並將TCP報頭之外的所有內容顯示爲轉儲。

此外,該轉儲沒有任何純文本字符串。儘管遊戲具有聊天功能,但發送的聊天字符串在此轉儲中不會以純文本形式出現在任何位置。

我的任務是逆向工程協議一點點找到包含在包中的數據了一些非常基本的東西。

有誰知道爲什麼聊天字符串不以純文本形式可見,並且是否有可能正在使用一個標準的最高級別協議?

此外,有沒有任何工具可以幫助從轉儲中獲取數據?

+0

如果加密方案是SSL的時候,你會不會後悔/ TLS,那麼你可以使用http://crypto.stanford.edu/~ eujin/sslsniffer/index.html來分析線路上的數據包。如果是一些土生土長的加密,你是失鎖...... – Malkocoglu 2009-11-16 09:59:00

回答

5

如果它已加密有機會(實際上,如果您正確處理它,您有100%的機會):密鑰必須位於計算機的某個位置。只需打開你最喜歡的調試器,觀察一下數據來自套接字,設置一個關於這些數據的觀察點,然後看看訪問的事物的堆棧痕跡(err,一百個字節或者我希望的)它。如果你真的很幸運,你甚至可能會看到它被解密。如果不是這樣,那麼你可能會選擇使用標準加密算法(他們從理論上的安全角度來看不是傻瓜),要麼通過查看堆棧跟蹤(如果你幸運的話),要麼通過使用其中一個IV/S-Box分析器(避開學術分析器,其中大多數分析器在沒有很多麻煩的情況下工作)。許多加密算法使用可檢測到的「標準數據」塊(這些是IVs/S盒),這些就是您在沒有其他信息的情況下所尋找的。無論您發現什麼,都可以將其谷歌,並嘗試覆蓋他們的加密庫來轉儲正在加密/解密的數據。從這些轉儲中,應該比較容易地看到發生了什麼。

REing加密的會話,可以有很多的樂趣,但它需要技巧與調試器,將大量的閱讀。它可以是令人沮喪的,但如果你花學習如何做到這一點:)

2

最佳猜想:加密或壓縮。

即使遠程登錄支持壓縮過線,即使整個協議是完全基於文本(好,非常接近)。

你可以嘗試通過一些常見的壓縮實用程序運行的數據流,但我懷疑這會爲你做很多,因爲他們不傳輸壓縮頭所有的可能性,有強制執行只是某些特定值。

如果是INFACT加密,那麼你幾乎擰(沒有多少,更多的努力,我甚至不打算開始進入)。

2

它最有可能是壓縮或加密。

如果它被加密,你將不會有機會。

如果它是壓縮你必須以某種方式找出哪部分數據被壓縮,在壓縮的部分開始,壓縮算法是什麼。如果你的幸運將會有標準標題,你可以識別,儘管它們可能被剝離出來以節省空間。

這一切都不簡單。逆向工程很難。沒有任何標準工具可以幫助你,你只需要進行調查和嘗試,直到找出答案。我的建議是向開發人員詢問協議規範,看看他們是否願意幫助支持你想要做的事情。

+0

+1溝通,但我懷疑很多網絡遊戲的將是開心透露自己的協議規範。 – 2009-09-17 10:15:36

+1

@Matthew:這是真的,這可能是一個長鏡頭,但很多遊戲都有興旺改裝社區。取決於他們可能想要支持第三方擴展的團隊。看看Quake&Unreal(顯示我的年齡)這些遊戲,他們實際上將所有的源代碼發給mod。我不知道這是否仍然是慣例,但值得提問。 – 2009-09-17 10:20:26