zoukankan      html  css  js  c++  java
  • 08,python查找统一局域网下ip对应的mac地址。

    # arp扫描,定义一个函数,发送两层的arp包,请求同一局域网内其他IP地址的mac地址。
    from scapy.all import *
    import uuid,socket
    # 获取本机的IP地址。
    def get_ip_address():
    # 获取本机电脑名
    myname = socket.getfqdn(socket.gethostname())
    # 获取本机ip
    myaddr = socket.gethostbyname(myname)
    return myaddr
    # 获取本机的mac地址。
    def get_mac_address():
    mac = uuid.UUID(int=uuid.getnode()).hex[-12:]
    return ":".join([mac[e:e + 2] for e in range(0, 11, 2)])

    # arp扫描,获取统一局域网下的IP地址的mac地址。
    def arp_scan(ip):
    # 获取本机的mac地址。
    local_mac = get_mac_address()
    # 获取本机的ip地址。
    local_ip = get_ip_address()
    # print(type(local_ip),type(local_mac))
    # 分隔IP地址。
    ip_split = ip.split('.')
    ip_list = []
    # 进行重新定义ip地址段。
    for i in range(1,25):
    ip_list.append(ip_split[0] + '.' + ip_split[1] + '.' + ip_split[2] + '.' + str(i))
    print(ip_list,local_ip,local_mac)
    # arp_result = srp(Ether(src = local_mac,dst = 'ff:ff:ff:ff:ff:ff')/ARP(op = 1,hw = '00:00:00:00:00:00',psrc = local_ip,pdst = ip_list),timeout = 1,verbose = False)
    # 构造二层包,写入以太网层,这里每一层包需要填什么字段,可以取scapy界面看一下。
    arp_result = srp(Ether(src=local_mac, dst='ff:ff:ff:ff:ff:ff')/ARP(op=1, hwsrc=local_mac, hwdst='00:00:00:00:00:00',psrc=local_ip, pdst=ip_list), timeout=1,verbose=False)
    # 进行解包操作。
    mac_result = arp_result[0].res
    mac_list = []
    # 找到对应的IP地址和MAC地址。
    for i in range(len(mac_result)):
    ip = mac_result[i][1][1].fields['psrc']
    mac = mac_result[i][1][1].fields['hwsrc']
    mac_list.append([ip,mac])
    return mac_list

    if __name__ == "__main__":
    ip = '192.168.156.1'
    mac_list = arp_scan(ip)
    for i in range(len(mac_list)):
    print("IP地址:",mac_list[i][0],'MAC地址:',mac_list[i][1])



  • 相关阅读:
    C#中get和set的写法
    FineUI中Newtonsoft.Json版本报错解决办法
    ExtAspNet和FineUI未将对象引用设置到对象的实例
    【转载】写runat="server"有什么用
    (object sender,EventArgs e)是什么?
    【转载】onclick与onCommand的区别
    简单总结------redis
    将list等分成n份
    将List 分成n个长度由调用者指定的子List
    CountDownLatch 我的应用场景
  • 原文地址:https://www.cnblogs.com/cong12586/p/14213191.html
Copyright © 2011-2022 走看看