2012-02-09 138 views
2

這是情況。網絡中有服務器和客戶端。他們溝通如下:更改TCP/IP數據包C++或java

  1. 客戶端發送某些功能的請求。
  2. 服務器發送到客戶端功能參數。
  3. 客戶端嘗試執行功能並將答案發送給服務器。
  4. 服務器向客戶端發送它應該顯示的數據。

但有時客戶端不能執行的功能,併發送錯誤。我想捕獲來自步驟2的所有數據包,分析它們(我已經有了這些工具),阻止它們中的一些到達客戶端,使用我的程序處理它們並像步驟3那樣形成數據包。這必須在客戶端上完成側。我無法訪問服務器和客戶端。

所以,問題是:改變,注射和C++或Java刪除TCP/IP包有庫?該解決方案應該可以在Win和Linux系統上運行。 另外,可能您有更好的想法來擴展客戶端功能嗎?

感謝您的幫助! 我試圖谷歌如何更改數據包,但我得到的是沒有回答的問題和嗅探器=(

編輯:其實,我並不真的需要注入和刪除數據包,我可以管理它只改變數據包數據。此外,還有在同一個包沒有多個請求,並在多個數據包單個請求是沒有問題的。

回答

3

你必須建立一個代理服務器,客戶端連接到代理和代理本身連接到服務器。它只是路由的所有包客戶端和服務器之間。

但現在能夠攔截的具體信息,並對其進行修改。試想一下,一個過濾HTTP代理,它以同樣的方式工作。

+1

+1它不值得你可以在同一個數據包中有多個請求,並且在多個數據包中有一個請求。你也不能簡單地將數據包注入或從數據流中刪除數據包,因爲它們被編號。 – 2012-02-09 07:55:59

+0

謝謝,我從boost示例構建了代理,它做了我需要的事情。 – ov7a 2012-02-10 07:12:36

1

我有一個關於Linux和FreeBSD,一種低級庫,有助於趕上或注入數據包libpcap的個人經驗。我確實在IPV6網橋項目中使用它......但我知道有一個Windows端口。 http://sourceforge.net/projects/libpcap/ 你可以讓圖書館:使用過濾器

  • 提取數據從包
  • 您可以處理數據(修改它們)
  • 重新注入再次使用相同的庫

    1. 捕獲數據包

    但你必須在一個相當原始此事與內部數據的工作。這個庫的最佳文檔是其頭文件中的註釋,這是最新的信息。也許有一些更舒適的高級圖書館。