用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 时间处理datetime实例
Sep 06 Python
一个简单的python程序实例(通讯录)
Nov 29 Python
Python中用Decorator来简化元编程的教程
Apr 13 Python
详解Django中间件的5种自定义方法
Jul 26 Python
Python在图片中插入大量文字并且自动换行
Jan 02 Python
深入理解Python异常处理的哲学
Feb 01 Python
python爬虫 爬取超清壁纸代码实例
Aug 16 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 Python
Python+OpenCV实现实时眼动追踪的示例代码
Nov 11 Python
调整Jupyter notebook的启动目录操作
Apr 10 Python
python爬虫可以爬什么
Jun 16 Python
Python sklearn分类决策树方法详解
Sep 23 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下一个非常全面获取图象信息的函数
2008/11/20 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
js时间日期和毫秒的相互转换
2013/02/22 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
js实现符合国情的日期插件详解
2017/01/19 Javascript
详解vue.js之绑定class和style的示例代码
2017/08/24 Javascript
js移动端图片压缩上传功能
2020/08/18 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
ant design实现圈选功能
2019/12/17 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
跟老齐学Python之数据类型总结
2014/09/24 Python
Python验证码识别的方法
2015/07/10 Python
Django实现快速分页的方法实例
2017/10/22 Python
简单了解python模块概念
2018/01/11 Python
Python多线程原理与用法详解
2018/08/20 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
使用python绘制二维图形示例
2019/11/22 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
Python如何发送与接收大型数组
2020/08/07 Python
StubHub德国:购买和出售门票
2017/09/06 全球购物
高一家长会邀请函
2014/01/12 职场文书
秋季开学典礼主持词
2014/03/19 职场文书
房地产活动策划方案
2014/05/14 职场文书
统计专业自荐书
2014/07/06 职场文书
争先创优公开承诺书
2014/08/30 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
天气温馨提示语
2015/07/14 职场文书
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers