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


Posted in Python onJanuary 13, 2021

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 相关文章推荐
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
Jul 04 Python
举例区分Python中的浅复制与深复制
Jul 02 Python
Python实现批量修改文件名实例
Jul 08 Python
Python中的列表生成式与生成器学习教程
Mar 13 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
Python3解释器知识点总结
Feb 19 Python
使用python实现回文数的四种方法小结
Nov 24 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
解决python中import文件夹下面py文件报错问题
Jun 01 Python
django filter过滤器实现显示某个类型指定字段不同值方式
Jul 16 Python
python 匿名函数与三元运算学习笔记
Oct 23 Python
Anaconda配置各版本Pytorch的实现
Aug 07 Python
python 写一个水果忍者游戏
Jan 13 #Python
python中编写函数并调用的知识点总结
Jan 13 #Python
Python jieba库分词模式实例用法
Jan 13 #Python
python中yield的用法详解
Jan 13 #Python
利用python+request通过接口实现人员通行记录上传功能
Jan 13 #Python
selenium如何定位span元素的实现
Jan 13 #Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 #Python
You might like
PHP代码审核的详细介绍
2013/06/13 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
javascript 框架小结 个人工作经验
2009/06/13 Javascript
纯js简单日历实现代码
2013/10/05 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
Python编程之序列操作实例详解
2017/07/22 Python
关于Python数据结构中字典的心得
2017/12/04 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
波兰在线儿童和婴儿用品零售商:pinkorblue
2019/06/29 全球购物
小学红领巾中秋节广播稿
2014/01/13 职场文书
气象学专业个人求职信
2014/04/22 职场文书
优秀大学生自荐信
2015/03/26 职场文书
《藏戏》教学反思
2016/02/23 职场文书
浅谈MySQL user权限表
2021/06/18 MySQL