MAC物理地址获取两种方式

点关注不迷路,欢迎再来!

精简博客内容,尽量已专业术语来分享。
努力做到对每一位认可自己的读者负责。
帮助别人的同时更是丰富自己的良机。

MAC物理地址具有唯一性,绑定在网卡上

最近做了有关获取客户端MAC地址的需求,一般来看是不会有这种不合理的需求,目前对于MAC地址获取浏览器默认为属于一种脚本木马,仅有IE浏览器目前支持JS获取客户端的MAC物理地址。但是仍然存在特殊的业务,比如小编现在的需求:在登陆页面获取到客户端的物理地址MAC,用来控制用户登陆权限校验(说简单了其实就是一种特殊的登陆权限)。

一.通过js获取MAC地址,IP,计算机名
需要在IE浏览器下开启安全设置中的active控件(对未标记为可安全执行脚本的Active控件)。

<!DOCTYPE HTML>
<html>
<head>
<title>js获取本机mac地址,IP地址,计算机名</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta content="MSHTML 6.00.2800.1106" name="GENERATOR">
</head><body>
<object id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></object>
<object id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></object>
<script language="JScript"> var service = locator.ConnectServer(); var MACAddr ; var IPAddr ; var DomainAddr; var sDNSName; service.Security_.ImpersonationLevel=3; service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</script>
<script language="JScript" event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for="foo"> document.forms[0].txtMACAddr.value=unescape(MACAddr); document.all.txtIPAddr.value=unescape(IPAddr); document.forms[0].txtDNSName.value=unescape(sDNSName); //document.formbar.submit();
</script>
<script language="JScript" event="OnObjectReady(objObject,objAsyncContext)" for="foo">
if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true) { if(objObject.MACAddress != null && objObject.MACAddress != "undefined") {MACAddr = objObject.MACAddress; }if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined") {IPAddr = objObject.IPAddress(0); }

二.通过后台代码获取本机所有MAC地址
缺点:只能获取到本机下的MAC地址,推荐js写法,还有一种写法是通过命令方式获取(不推荐)

public class Mac {public static void main(String[] args) {try {Enumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces();while (enumeration.hasMoreElements()) {StringBuffer stringBuffer = new StringBuffer();NetworkInterface networkInterface = enumeration.nextElement();if (networkInterface != null) {byte[] bytes = networkInterface.getHardwareAddress();if (bytes != null) {for (int i = 0; i < bytes.length; i++) {if (i != 0) {stringBuffer.append("-");}int tmp = bytes[i] & 0xff; // 字节转换为整数String str = Integer.toHexString(tmp);if (str.length() == 1) {stringBuffer.append("0" + str);} else {stringBuffer.append(str);}}String mac = stringBuffer.toString().toUpperCase();  System.out.println(mac);}}}} catch (Exception e) {e.printStackTrace();}}
}

三.通过命令ipconfig/all查看本机MAC地址
笔记本一般有两个网卡(无线和有线)

四.笔记心得
MAC物理地址具有安全性和保密性,因为它的唯一性特殊需求下还是有用的,显然IP是不具备的(可以有假IP),推荐JS获取可以通过表单提交到后台。

MAC物理地址获取两种方式相关推荐

  1. 转:Win10秘笈:两种方式修改网卡物理地址(MAC)

    转自:http://www.ithome.com/html/win10/244510.htm Win10秘笈:两种方式修改网卡物理地址(MAC) 2016-7-27 16:48:41来源:IT之家作者 ...

  2. OpenWrt 获取 WAN口 IPv4的IP 两种方式

    文章目录 OpenWrt 获取 WAN口 IPv4的IP 两种方式 前言 1.ifconfig获取 2.ubus获取 后话 OpenWrt 获取 WAN口 IPv4的IP 两种方式 前言 ssh连接到 ...

  3. jvm两种方式获取对象所占用的内存

    在开发过程中,我们有时需要来获取某个对象的大小,以方便我们参考,来决定开发的技术方案.jvm中提供了两种方式来获取一个对象的大小. 通过Instrumentation来计算对象的大小 编写计算代码: ...

  4. 获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用...

    当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取: 方式一: 通过一个list来保存一组future,然后在循环中轮训这组future,直 ...

  5. html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式

    从Bitmap中我们能获取到的是RGB颜色分量,当需要获取YUV数据的时候,则需要先提取R,G,B分量的值,然后将RGB转化为YUV(根据具体的YUV的排列格式做相应的Y,U,V分量的排列) 所以这篇 ...

  6. 【REACT NATIVE 系列教程之十三】利用LISTVIEW与TEXTINPUT制作聊天/对话框获取组件实例常用的两种方式...

    本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2346.html ...

  7. Android之从网络上获取图片的两种方式讲解:thread+handle和AsyncTask方式

    从网络上获取图片是一个比较耗时的操作,放在主线程会导致阻塞主线程,响应超时,所以我们不能把它放在主线程里操作,必须放在一个子线程里,我打算采用两种方式去实现.1.采用thread去获取图片,获取到后通 ...

  8. 探讨Netty获取并检查Websocket握手请求的两种方式

    在使用Netty开发Websocket服务时,通常需要解析来自客户端请求的URL.Headers等等相关内容,并做相关检查或处理.本文将讨论两种实现方法. 方法一:基于HandshakeComplet ...

  9. Java中类加载器获取的两种方式

    import org.junit.Test;import java.io.FileInputStream; import java.io.IOException; import java.io.Inp ...

最新文章

  1. ASP.NET 会话状态
  2. Android在ListView滑动数据混乱
  3. PAT A1065 A+B and C (64bit) (20 分)
  4. 复旦 哈工大计算机学院,国内高校中哈工大和上交复旦在一个档次吗?从这些方面看你就知道...
  5. C++ volatile关键字说明
  6. G1与CMS的区别是什么
  7. 删数问题(Noip1994)
  8. qregularexpression和qregexp的区别
  9. php中用get和post传值时的用法 $_GET[], $_POST[]
  10. BSN联盟链专有节点服务介绍
  11. JavaScript 3D实时线图
  12. 误差修正ECM模型怎么分析?
  13. 医院网络安全管理方案
  14. COMSOL 固体力学 第一主应力、第二主应力、第三主应力、径向应力、环向应力、切向应力 截面一维曲线
  15. Mac手动关闭暗黑模式
  16. A 股历年三大财务报表
  17. CA EXPO会议参会小记(组图)
  18. 计算机开机进不去桌面,电脑开机直接跳过启动界面进去电脑桌面,想进bios进不去怎么办...
  19. NO.79——BFS,DFS,Astar,爬山法,最抖爬山法,模拟退火法解决八数码问题Python实现
  20. Android平板能装fydeos,在 FydeOS 中如何安装安卓应用 - FydeOS 帮助手册

热门文章

  1. 【bzoj1012】[JSOI2008]最大数maxnumber st表
  2. CF 1139A-Even Substrings(签到题)
  3. 【js】且运算、或运算
  4. jQuery表单验证(Validate)使用方法
  5. 程序员需要了解的数学难题
  6. 使用systemback和ventoy制作ISO大于4GB的U盘启动盘
  7. Adobe终于在Flash Player 11和Air 3上支持3D了
  8. Google Drive 大文件下载中途失败解决方法
  9. 2023 Thinkphp 友链买卖互换程序 仿alivv爱链网友链交易平台源码
  10. Mac/Linux 安装 Go 详解