python
首页 > 脚本专栏 > python > python 查找mac地址

用python查找统一局域网下ip对应的mac地址

发布时间:2021-01-13 17:32:31 作者:月为暮
这篇文章主要介绍了用python查找统一局域网下ip对应的mac地址的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下

MAC地址也叫物理地址、硬件地址,由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM(一种闪存芯片,通常可以通过程序擦写)。IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位的 [3]  。

MAC地址的长度为48位(6个字节),通常表示为12个16进制数,如:00-16-EA-AE-3C-40就是一个MAC地址,其中前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号。只要不更改自己的MAC地址,MAC地址在世界是唯一的。形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性

我们可以编写如下python代码来查询

# 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])

以上就是用python查找统一局域网下ip对应的mac地址的详细内容,更多关于python 查找mac地址的资料请关注脚本之家其它相关文章!

相关文章

Python修改MP3文件的方法

2015-06-06
Python修改MP3文件的方法

Python使用turtle库绘制小猪佩奇(实例代码)

2020-01-01
Python使用turtle库绘制小猪佩奇(实例代码)

Python3中的bytes和str类型详解

2019-05-05
Python3中的bytes和str类型详解

python编程使用selenium模拟登陆淘宝实例代码

2018-01-01
python编程使用selenium模拟登陆淘宝实例代码
最新更新

Python反射用法实例简析

2018-01-01
Python反射用法实例简析

使用Python实现NBA球员数据查询小程序功能

2018-01-01
使用Python实现NBA球员数据查询小程序功能

Python 操作mysql数据库查询之fetchone()

2018-01-01
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例

Python叠加矩形框图层2种方法及效果

2018-01-01
Python叠加矩形框图层2种方法及效果
业界资讯

2021年元旦火车票什么时候买? 2021年火车票开售时间公布

2020-12-03
2021年元旦火车票什么时候买? 2021年火车票开售时间公布

IntelliJ IDEA 2020.3 EAP5:引入 ML 编码,Git Stage 支持

2020-12-01
IntelliJ IDEA 2020.3 EAP5:引入 ML 编码,Git Stage 支持

2021年放假安排时间表什么时候出? 2021年国家法定假日公布

2020-11-27
2021年放假安排时间表什么时候出? 2021年国家法定假日公布

最新阿里云盘邀请码 (共17个邀请码) 亲测有效

2020-11-23
最新阿里云盘邀请码 (共17个邀请码) 亲测有效

电脑版 - 返回首页

2006-2021 脚本之家 JB51.Net , All Rights Reserved.
苏ICP备14036222号