用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 的 with 语句详解
Jun 13 Python
python处理文本文件实现生成指定格式文件的方法
Jul 31 Python
Python连接mysql数据库的正确姿势
Feb 03 Python
python妙用之编码的转换详解
Apr 21 Python
python3 unicode列表转换为中文的实例
Oct 26 Python
对python:threading.Thread类的使用方法详解
Jan 31 Python
python整小时 整天时间戳获取算法示例
Feb 20 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
在pycharm中创建django项目的示例代码
May 28 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
Jul 01 Python
python解包用法详解
Feb 17 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
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
PHP英文字母大小写转换函数小结
2014/05/03 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
JS 继承实例分析
2008/11/04 Javascript
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
详解a++和++a的区别
2017/08/30 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
2020/05/26 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
通过css3动画和opacity透明度实现呼吸灯效果
2019/08/09 HTML / CSS
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
荷兰电脑专场:Paradigit
2018/05/05 全球购物
abstract是什么意思
2012/02/12 面试题
电脑租赁公司创业计划书
2014/01/08 职场文书
计划生育宣传标语
2014/06/21 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
六年级小学生评语
2014/12/26 职场文书
体育教师个人总结
2015/02/09 职场文书
幼儿园六一主持词
2015/06/30 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技