如何使用Perl动态捕获和编辑网络数据包?

时间:2009-12-07 17:26:13

标签: perl network-programming network-protocols libpcap

有人知道Win32上的CPAN模块捕获网络数据包并动态编辑它们吗?据我所知,Win32上唯一一个动态处理数据包的Perl模块是Net::Pcap,但它只支持被动监控,不支持TCP / IP协议栈。

是否有人可以提供示例/参考/文档这样的模块?

3 个答案:

答案 0 :(得分:2)

据我所知,libpcap允许您读取传入和传出数据包的副本,而某些实现允许您注入原始数据包,但不能重写数据包。您基本上必须删除原始数据包(libpcap无法做到的事情),然后在其中注入一个新数据包。

允许您过滤传入和传出数据包的防火墙应用程序可能能够执行此类操作。但是,由于你在谈论Perl和Win32,你的选择可能有限。

答案 1 :(得分:0)

我认为正确答案是“为此实施代理”。

如果在您的方案中有效,请尝试实施代理服务器。在目标服务上侦听同一端口并读取所有传入流量。如果您需要修改数据包,请执行此操作并将所有流量传递到目标服务。当然,你必须实现两个方向。

您可以在perl中搜索基本的TCP deamon代码段,也可以为您的服务实现现有代理服务器的模块。是HTTP还是需要处理哪种流量?

答案 2 :(得分:0)

我建议使用Net :: Pcap来捕获流量,然后使用TCPReplay的Cygwin端口来修改和重放流量。显然Linux设置会更可靠,因为TCPreplay可以在不需要cygwin的情况下开箱即用。