2012-02-09 99 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. 捕获数据包

    但你必须在一个相当原始此事与内部数据的工作。这个库的最佳文档是其头文件中的注释,这是最新的信息。也许有一些更舒适的高级图书馆。