python ma-in-middle scapy和netfilterqueue

时间:2018-11-23 17:57:42

标签: python scapy netfilter

我正在尝试使用scapy在LAN上进行中间人攻击,从而在一侧欺骗我的网关的MAC地址,而在另一端欺骗我的智能手机的MAC地址。这部分进行得很好。但是,我也想即时修改数据包。因此,我正在使用python的iptablesnetfilterqueue模块。短暂工作后,即使流量仍在被欺骗,修改脚本也不会打印任何数据包:

以下是为PREROUTING流量添加的iptables规则:

iptables -t nat -A PREROUTING -s 192.168.1.10/32 -j NFQUEUE --queue-num 1

这是用于队列1上的bind的脚本:

#!/usr/bin/env python

from scapy.all import *
from netfilterqueue import NetfilterQueue

def modify(packet):
   print(packet.get_payload())
   pkt = IP(packet.get_payload())
   print('source:'+pkt.src+'destination:'+pkt.dst)
   # packet.set_payload(str(pkt))
   packet.accept()

if __name__ == '__main__':
   try:
      nfqueue = NetfilterQueue()
      nfqueue.bind(1, modify)
      nfqueue.run()
   except KeyboardInterrupt:
      nfqueue.unbind()

症状:即使中间人进行得很顺利,并且nfqueue脚本在短时间内打印数据包,几秒钟后似乎没有任何内容进入netfilter队列,并且修改脚本也不再打印任何内容

如果我在iptables规则中设置了整个子网的源IP地址,则可以在脚本中打印广播和多播数据包。但是,不是来自智能手机的流量。

我知道我可以使用ettercap来执行这样的任务,但是我想自己创建它,以确保我理解思路清晰(显然,目前情况并非如此)。

非常感谢您的帮助!

0 个答案:

没有答案