用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 相关文章推荐
python每次处理固定个数的字符的方法总结
Jan 29 Python
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
Python3实现Web网页图片下载
Jan 28 Python
浅谈Python中用datetime包进行对时间的一些操作
Jun 23 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
Apr 15 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
Jun 17 Python
pytorch如何冻结某层参数的实现
Jan 10 Python
Python PyQt5模块实现窗口GUI界面代码实例
May 12 Python
浅谈anaconda python 版本对应关系
Oct 07 Python
python实现发送QQ邮件(可加附件)
Dec 23 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
Jan 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/02 PHP
php实现读取超大文件的方法
2014/07/28 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
Javascript 日期对象Date扩展方法
2009/05/30 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
Table冻结表头示例代码
2013/08/20 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
jquery实现简单的无缝滚动
2015/04/15 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
用Python设计一个经典小游戏
2017/05/15 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
Django的性能优化实现解析
2019/07/30 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
Python3.8安装Pygame教程步骤详解
2020/08/14 Python
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
教师辞职报告范文
2014/01/20 职场文书
十八届三中全会学习方案
2014/02/16 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
python 实现的截屏工具
2021/05/08 Python
详解MySQL连接挂死的原因
2021/05/18 MySQL