用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单线程实现多个定时器示例
Mar 30 Python
python获取网页状态码示例
Mar 30 Python
python3使用PyMysql连接mysql数据库实例
Feb 07 Python
利用python实现xml与数据库读取转换的方法
Jun 17 Python
对pandas的dataframe绘图并保存的实现方法
Aug 05 Python
python中的变量如何开辟内存
Jun 26 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 Python
django框架实现模板中获取request 的各种信息示例
Jul 01 Python
Pandas数据离散化原理及实例解析
Nov 16 Python
python打印n位数“水仙花数”(实例代码)
Dec 25 Python
python主要用于哪些方向
Jul 05 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之数据库操作详解及乱码解决!
2007/01/02 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
jQuery+ajax读取json数据并按照价格排序示例
2018/03/28 jQuery
解决vue热替换失效的根本原因
2018/09/19 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
Python的类实例属性访问规则探讨
2015/01/30 Python
python日志logging模块使用方法分析
2019/05/23 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
如何用Django处理gzip数据流
2021/01/29 Python
python实现按日期归档文件
2021/01/30 Python
Hanky Panky官方网站:内衣和睡衣
2019/07/25 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
华为的Java面试题
2014/03/07 面试题
单身联谊活动方案
2014/01/29 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
怎样写离婚协议书
2014/09/10 职场文书
2014最新版群众路线四风整改措施
2014/09/24 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
我的中国梦主题班会
2015/08/14 职场文书
Python制作春联的示例代码
2022/01/22 Python
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript