2

我正在Linux上用Python编写一个小程序,它将拦截从主机A到主机B的特定端口上通过线路传输的数据包。主机C将充当中间人,因此所有流量都将通过主机C(arp毒法)。我已经成功编写了拦截部分,因此我可以在屏幕上看到所有数据,但我希望在不更改标头数据的情况下修改数据包数据(当然校验和将被更改)。如何使用截获的带有 pcapy/impacket 的数据包来实现这一点?

它可能有点模糊,但主要思想如下。
1. 主机 A 向主机 B 发送“Hello”(主机 A 和 B 被 arp 欺骗,因此流量通过主机 C)。
2. 主机 C 从主机 A 获取“Hello”(默认情况下,主机 C 将“Hello”重定向到主机 B,但我想要其他内容 - 参见第 3 点)
3. 主机 C 将“Hello”修改为“Bye”并重定向(内核的 ip_forward?)到主机 B。
4. 主机 B 得到“再见”。

也许有一种方法可以使用一些 linux 机制来实现这一点?现在我被困住了,我会很感激任何想法。

4

1 回答 1

1

对于这种应用程序,我更喜欢scapy 。它是一个强大的 python 包,允许您在协议栈的各个层捕获、操作和传输数据包。

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

于 2011-01-04T23:55:27.847 回答