通过我的程序路由所有数据包?

时间:2012-01-10 18:01:18

标签: java python networking tcp tunnel

我想构建一个应用程序,通过我的应用程序路由所有网络流量(不仅仅是HTTP)。基本上,我想要的是给我的应用程序的所有流量(它们永远不应该达到实际目标,我的应用程序应该处理这个),然后将其转发到服务器;同样适用于输入,只需反转(服务器 - >应用程序 - >想要答案的程序)。是否有任何库(或类似的东西)可以使创建应用程序更容易?我正在寻找可以从Python或Java中使用的东西,但如果真的需要,我可以学习另一种语言。

4 个答案:

答案 0 :(得分:4)

您要使用的是数据包捕获库,您可以e pcap或其在python或java中的实现或绑定。

然而,像这样的事情在理想情况下使用C在低级别实现, 这是一个教程Tutorial

编辑:根据您的意见,您肯定想看看netfilter挂钩

当你在这里时,你也可能想看看netfilter hooks

答案 1 :(得分:1)

查看Jpcap

答案 2 :(得分:1)

如果你只想路由tcp流量实际上很简单,使用线程和套接字。 您应该在每个要访问的服务器的不同端口中进行侦听。无论是在Java还是Python中,您都必须为要监听的每个端口创建一个“套接字”。

对于每个新连接,您创建一个到服务器的新连接并创建两个新线程来处理该连接,一个线程将从客户端读取所有内容并将其发送到服务器。另一个将从服务器读取所有内容并将其发送到客户端。当连接的任何一端关闭它时,你关闭另一端并结束两个线程。

答案 3 :(得分:0)

如果您在Linux上执行此操作,则应考虑使用TUN / TAP设备,这是一种非常方便的工具,用于拦截网络流量以进行自定义处理。如果您不熟悉http://backreference.org/2010/03/26/tuntap-interface-tutorial/

,这是一个基本教程
相关问题