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

2024-10-01 02:30:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的问题,我相信这里有人曾经做过。。。在

我想重写第4层TCP/IP流(不是较低层的单个数据包或帧)。Ettercap的etterfilter命令允许您基于固定字符串或regex对第4层TCP/IP流执行简单的实时替换。示例ETERCAP脚本代码:

 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");
    }
 } 

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

我想根据我自己的过滤程序重写流,而不是简单的字符串替换。有人知道怎么做吗?除了Ettercap之外,还有什么东西可以像这样进行实时替换,比如作为VPN软件的插件之类的?在

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

^{pr2}$

我的过滤器将是一个userspacepython函数。在

我已经知道但不适合的:

  • Tun/Tap-在较低的包层工作,我需要处理更高层的流。

  • 除了上面例子中受限的功能之外,我找不到任何替代方法。

  • 连接到VPN软件?-我就是搞不清到底是哪一个或是怎么做的。

  • libnetfilter_queue-用于较低层的数据包,而不是TCP/IP流。

同样,重写应该发生在传输层(第4层),正如在本例中所做的那样,而不是基于低层分组的方法。准确的代码会有很大的帮助!在

谢谢!在


Tags: 字符串代码ip过滤器if数据包tcpdst
3条回答

看一看Scapy,或者另一个包制作工具。这种类型的人不多。在

Ettercap似乎是一个开源项目,因为它托管在SourceForge上。也许你应该看看它是怎么做到的。在

当时我正在编写一个网络流量分析工具,使用libpcap进行捕获,libnids用于流组装。在

我没有尝试过重新注入流量,但是您可以使用TAP将流量转发给一个用户程序,该程序将使用libnids来组装数据包,将流输出到一个过滤代码中,然后获取流并对其进行反汇编(我确信libnids也有此功能),并将它们重新注入到需要的位置。在

如果您想要python,pynids似乎可以满足您的需要,但我没有使用它的经验。在

相关问题 更多 >