2

这是情况。网络中有服务器和客户端。他们是这样交流的:

  1. 客户端发送某些功能的请求。
  2. 服务器向客户端发送函数参数。
  3. 客户端尝试执行功能并向服务器发送答案。
  4. 服务器向客户端发送它应该显示的数据。

但有时客户端无法执行功能并发送错误。我想从第 2 步捕获所有数据包,分析它们(我已经有工具),防止其中一些到达客户端,用我的程序处理它们并像第 3 步一样形成数据包。这必须在客户端完成边。我既无法访问服务器也无法访问客户端。

所以,问题是:在 c++ 或 java 中是否有用于更改、注入和删除 tcp/ip 数据包的库?该解决方案应该适用于 Win 和 Linux 系统。另外,您是否有更好的想法来扩展客户端功能?

谢谢你的帮助!我试图用谷歌搜索如何更改数据包,但我得到的只是未回答的问题和嗅探器=(

编辑:实际上,我真的不需要注入和删除数据包,我只需更改数据包数据即可管理它。此外,同一个数据包中没有多个请求,跨多个数据包的单个请求也不成问题。

4

2 回答 2

3

你必须为你的服务器建立一个代理。客户端连接到代理,代理本身连接到服务器。它只是在客户端和服务器之间路由所有包。

但它现在能够拦截特定消息并对其进行修改。想象一个过滤 HTTP 代理,它的工作方式相同。

于 2012-02-09T07:09:08.590 回答
1

我对 linux 和 freeBSD 上的 libpcap 有个人经验,freeBSD 是一种有助于捕获或注入数据包的低级库。我确实在 IPV6 网桥项目中使用过它……但我知道它有一个 Windows 端口。 http://sourceforge.net/projects/libpcap/ 你可以让库:

  1. 使用过滤器捕获数据包
  2. 从数据包中提取数据
  3. 您可以处理数据(修改它们)
  4. 使用同一个库再次重新注入

但是您必须以非常原始的方式处理内部数据。该库的最佳文档是其头文件中的注释,这是最新的信息。也许有一些更舒适的高级库。

于 2013-07-06T16:10:10.703 回答