重写Live TCP/IP(第4层)(即套接字层)流

use*_*060 13 c python sockets security network-programming

我有一个简单的问题,我相信这里有人已经做过......

我想重写第4层TCP/IP流(不是低层单独的数据包或帧.)Ettercap的etterfilter命令允许您基于固定字符串或正则表达式执行第4层TCP/IP流的简单实时替换.示例ettercap脚本代码:

 if (ip.proto == TCP && tcp.dst == 80) {
    if (search(DATA.data, "gzip")) {
       replace("gzip", "    ");
       msg("whited out gzip\n");
    }
 }

 if (ip.proto == TCP && tcp.dst == 80) {
    if (search(DATA.data, "deflate")) {
       replace("deflate", "       "); 
       msg("whited out deflate\n");
    }
 } 
Run Code Online (Sandbox Code Playgroud)

http://ettercap.sourceforge.net/forum/viewtopic.php?t=2833

我想基于我自己的过滤器程序重写流,而不是简单的字符串替换.任何人都知道如何做到这一点?除了Ettercap之外还有什么可以做这样的实时替换,可能作为VPN软件的插件还是什么?

我想在两个以太网接口之间进行类似于ettercap的静默桥接嗅探配置的配置.通过这种方式,我可以无声地过滤来自任一方向的流量而不会出现NAT问题.请注意,我的过滤器是一个充当管道过滤器的应用程序,类似于unix命令行过滤器的设计:

 >[eth0] <----------> [my filter] <----------> [eth1]<
Run Code Online (Sandbox Code Playgroud)

我的过滤器将是用户空间Python函数.

我已经知道但不适合:

  • Tun/Tap - 在较低的数据包层工作,我需要使用更高层的流.

  • Ettercap - 除了上面示例中的受限功能之外,我找不到任何替换方法.

  • 挂进一些VPN软件? - 我无法弄清楚究竟是哪种或者究竟是怎样的.

  • libnetfilter_queue - 使用较低层数据包,而不是TCP/IP流.

同样,重写应该在传输层(第4层)发生,就像在本例中那样,而不是基于较低层数据包的方法.确切的代码将极大地帮助!

谢谢!

rme*_*dor 1

Ettercap 看起来是一个开源项目,因为它托管在 SourceForge 上。也许你应该看看它是如何做到的。