簡體   English   中英

更改TCP / IP數據包C ++或Java

[英]Changing tcp/ip packets c++ or java

這是情況。 網絡中有服務器和客戶端。 他們這樣交流:

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

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

因此,問題是:是否存在用於在c ++或java中更改,注入和刪除tcp / ip數據包的庫? 該解決方案應該在Win和Linux系統上都可以使用。 另外,您是否有更好的想法來擴展客戶端功能?

謝謝你的幫助! 我試圖用谷歌搜索如何更改數據包,但我得到的只是未解決的問題和嗅探器=(

編輯:實際上,我真的不需要注入和刪除數據包,只需更改數據包數據就可以對其進行管理。 同樣,在同一數據包中沒有多個請求,並且跨多個數據包的單個請求也不是問題。

您必須為服務器構建一個代理。 客戶端連接到代理,而代理本身連接到服務器。 它只是在客戶端和服務器之間路由所有軟件包。

但是,現在它可以攔截特定消息並進行修改。 想象一下過濾HTTP代理,它的工作方式相同。

我在linux和freeBSD上有libpcap的經驗,這是一種有助於捕獲或注入數據包的低級庫。 我確實在IPV6網絡橋項目中使用了它……但是我知道有一個Windows端口。 http://sourceforge.net/projects/libpcap/您可以讓該庫執行以下操作:

  1. 使用過濾器捕獲數據包
  2. 從數據包中提取數據
  3. 您可以處理數據(修改它們)
  4. 使用相同的庫再次注入

但是,您將不得不完全處理內部數據。 該庫的最佳文檔是其頭文件中的注釋,這是最新信息。 也許有一些更舒適的高級庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM