MAC物理地址获取两种方式
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物理地址获取两种方式相关推荐
- 转:Win10秘笈:两种方式修改网卡物理地址(MAC)
转自:http://www.ithome.com/html/win10/244510.htm Win10秘笈:两种方式修改网卡物理地址(MAC) 2016-7-27 16:48:41来源:IT之家作者 ...
- OpenWrt 获取 WAN口 IPv4的IP 两种方式
文章目录 OpenWrt 获取 WAN口 IPv4的IP 两种方式 前言 1.ifconfig获取 2.ubus获取 后话 OpenWrt 获取 WAN口 IPv4的IP 两种方式 前言 ssh连接到 ...
- jvm两种方式获取对象所占用的内存
在开发过程中,我们有时需要来获取某个对象的大小,以方便我们参考,来决定开发的技术方案.jvm中提供了两种方式来获取一个对象的大小. 通过Instrumentation来计算对象的大小 编写计算代码: ...
- 获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用...
当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取: 方式一: 通过一个list来保存一组future,然后在循环中轮训这组future,直 ...
- html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式
从Bitmap中我们能获取到的是RGB颜色分量,当需要获取YUV数据的时候,则需要先提取R,G,B分量的值,然后将RGB转化为YUV(根据具体的YUV的排列格式做相应的Y,U,V分量的排列) 所以这篇 ...
- 【REACT NATIVE 系列教程之十三】利用LISTVIEW与TEXTINPUT制作聊天/对话框获取组件实例常用的两种方式...
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2346.html ...
- Android之从网络上获取图片的两种方式讲解:thread+handle和AsyncTask方式
从网络上获取图片是一个比较耗时的操作,放在主线程会导致阻塞主线程,响应超时,所以我们不能把它放在主线程里操作,必须放在一个子线程里,我打算采用两种方式去实现.1.采用thread去获取图片,获取到后通 ...
- 探讨Netty获取并检查Websocket握手请求的两种方式
在使用Netty开发Websocket服务时,通常需要解析来自客户端请求的URL.Headers等等相关内容,并做相关检查或处理.本文将讨论两种实现方法. 方法一:基于HandshakeComplet ...
- Java中类加载器获取的两种方式
import org.junit.Test;import java.io.FileInputStream; import java.io.IOException; import java.io.Inp ...
最新文章
- ASP.NET 会话状态
- Android在ListView滑动数据混乱
- PAT A1065 A+B and C (64bit) (20 分)
- 复旦 哈工大计算机学院,国内高校中哈工大和上交复旦在一个档次吗?从这些方面看你就知道...
- C++ volatile关键字说明
- G1与CMS的区别是什么
- 删数问题(Noip1994)
- qregularexpression和qregexp的区别
- php中用get和post传值时的用法 $_GET[], $_POST[]
- BSN联盟链专有节点服务介绍
- JavaScript 3D实时线图
- 误差修正ECM模型怎么分析?
- 医院网络安全管理方案
- COMSOL 固体力学 第一主应力、第二主应力、第三主应力、径向应力、环向应力、切向应力 截面一维曲线
- Mac手动关闭暗黑模式
- A 股历年三大财务报表
- CA EXPO会议参会小记(组图)
- 计算机开机进不去桌面,电脑开机直接跳过启动界面进去电脑桌面,想进bios进不去怎么办...
- NO.79——BFS,DFS,Astar,爬山法,最抖爬山法,模拟退火法解决八数码问题Python实现
- Android平板能装fydeos,在 FydeOS 中如何安装安卓应用 - FydeOS 帮助手册