arp扫描mac地址

arp扫描器

scapy模块的安装

pip3 install scapy

代码

#!/usr/bin/python3
import scapy.all as scapy
import threading
from pprint import pprint


IP_DICT = dict()


def get_mac(ip):
    """通过arp协议获取mac地址"""
    arp_packet = scapy.ARP(pdst=ip)
    broadcast_packet = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
    arp_broadcast_packet = broadcast_packet / arp_packet
    answered_list = scapy.srp(arp_broadcast_packet, timeout=1, verbose=False)[0]
    try:
        mac_address = answered_list[0][1].hwsrc
        print("{} > {}".format(ip, mac_address))
        IP_DICT[ip] = mac_address
        return mac_address
    except IndexError:
        return None


if __name__ == '__main__':
    IP = "192.168.50.{}"
    START = 1
    END = 254
    INTERVAL = 10
    for num in range(START, END, INTERVAL):
        start = num
        stop = num + INTERVAL - 1
        if stop > 254:
            stop = 254
        # 多线程
        threads_list = [threading.Thread(target=get_mac, args=(str(IP.format(i)),)) for i in range(start, stop)]
        for thread in threads_list:
            # 启动线程
            thread.start()
    print()
    pprint(IP_DICT)

运行效果

arp扫描mac地址_第1张图片

你可能感兴趣的:(python3,网路编程)