繁体   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