2010-11-20 21 views
2

我正在Linux上编写一个Python程序,它将拦截从主机A到主机B的特定端口上的数据包。主机C将充当中间人所以所有流量都将通过主机C(ARP中毒方法)。我已经成功地写了截取的部分,所以我可以看到屏幕上的所有数据,但我希望另外修改数据包数据而不更改标题数据(当然cheksum将会改变)。我如何使用pcapy/impacket拦截数据包来实现这一点?

这可能有点模糊,但主要思想如下。
1.主机A向主机B发送“Hello”(主机A和B被arp欺骗,以使通信流经主机C)。
2.主机C从主机A获得'Hello'(默认情况下,主机C将'Hello'重定向到主机B,但我想要别的东西 - 参见第3点)
3.主机C将'Hello'再见'并将重定向(内核的ip_forward?)给主机B.
4.主机B得到'再见'。

也许有一种方法使用一些Linux机制来实现这一目标?现在我卡住了,我会很感激任何想法。使用pcapy/impacket更改数据包数据

回答

1

我更喜欢scapy这种应用程序。这是一个功能强大的Python软件包,允许您在协议栈的各个层捕获,操作和传输数据包。

有几种方法可以执行您的中间人攻击。我可能会使用带有捕获来自主机A的数据包的过滤器的“sniff”函数。然后,我会指定一个回调(通过“prn”参数)修改数据包,并使用“sendp”将数据包重新发送给主机B.请注意,scapy还包含一个内置的“arpcachepoison”函数。