如何获取客户端MAC地址(三个方法)

方法一:

调用Windows的DOS命令,从输出结果中读取MAC地址:

public static String getMACAddress() {

String address = "";
String os = System.getProperty("os.name");
if ( os != null && os.startsWith("Windows")) {
try {
String command = "cmd.exe /c ipconfig /all";
Process p = Runtime.getRuntime().exec(command);
BufferedReader br =
new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
if (line.indexOf("Physical Address") > 0) {
int index = line.indexOf(":");
index += 2;
address = line.substring(index);
break;
}
}
br.close();
return address.trim();
}
catch (IOException e) { }
}
return address;
}

We can replace the "ipconfig" to "ping x.x.x.x" and "arp -a"...We can get the mac list...haha!!

缺点:只能取得服务器端MAC地址.如果要取得客户端的MAC地址,需用Applet.只针对MS-WIN系统.

 

方法二:

可以用JS或vbscript来调用WMI接口来获取Client端的MAC地址.

<html>
 <head>
 <title>WMI Scripting HTML</title>
 <script FOR="foo" EVENT="OnCompleted(hResult,pErrorObject, pAsyncContext)" LANGUAGE="JScript">

             document.forms[0].txtMACAddr.value=unescape(MACAddr);
             document.forms[0].txtIPAddr.value=unescape(IPAddr);
             document.forms[0].txtDNSName.value=unescape(sDNSName);
             //document.formbar.submit();
        </script>
 
 <script FOR="foo" EVENT="OnObjectReady(objObject,objAsyncContext)" LANGUAGE="JScript">

         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);

                   if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")
                      sDNSName = objObject.DNSHostName;

                   }
        </script>
 </head>
 <body>
  <object classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" id="locator" VIEWASTEXT>
  </object>
  <object classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223" id="foo">
  </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>

  <form method="POST" action="NICPost.asp" id="formfoo" name="formbar">

   <input type=text  name="txtMACAddr">
   <input type=text  name="txtIPAddr">
   <input type=text  name="txtDNSName">

  </form>
 </body>
</html>

关于WMI的详细信息可以参看MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_tasks_for_scripts_and_applications.asp

平心而论,WMI的很强大的。原先需要动用重量级编程工具才能做到的事,现在用js/vbscript就可以做了。

获取多块网卡的MAC地址:

if(objObject.MACAddress != null && objObject.MACAddress != "undefined"){
                         MACAddr = objObject.MACAddress;
                         alert( MACAddr );
                   }

缺点:需要ActiveX支持.对MS-WIN系统有效.

方法三:

想137口发送UDP查询:

WINDOWS平台的客户端(当获取时它转换为服务端角色),NETBIOS协议在137口上,我们只要向它的137口发送UDP查询,获取它的返回值就可以获取到它所有的网卡地址

时间: 2024-11-10 07:52:20

如何获取客户端MAC地址(三个方法)的相关文章

c++-路由器获取客户端MAC地址原理是什么?如何用winsock模拟之?

问题描述 路由器获取客户端MAC地址原理是什么?如何用winsock模拟之? 前辈们好,我想通过winsock来获取client的MAC地址,查询了半天也没有结果,因此,想通过路由器获取MAC的方法来获取一点灵感. 1.路由器是如何获取客户的MAC地址的? 2.C++的winsock可以如何获取客户机MAC地址? 注意,是客户机,不是本机... 谢谢 解决方案 用sendarp API来获取其他机器mac地址.mac地址维护是交换机的功能.但是一般路由器把两种设备合并了.所以路由器存有IP到ma

mac-asp.net 2.0 C#获取客户端MAC地址。

问题描述 asp.net 2.0 C#获取客户端MAC地址. public partial class 测试 : System.Web.UI.Page { [DllImport("Iphlpapi.dll")] private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length); [DllImport("Ws2_32.dll")] private sta

在ASP中获取客户端MAC地址的方法

客户端 本程序属于一种特别的方法.使用范围比较有限,而且有一定的危险性.借鉴了asp后门里的一些方法.下面是程序代码. <%dim remoteaddrif Request.ServerVariables("HTTP_X_FORWARDED_FOR")=empty thenremoteaddr=Request.ServerVariables("REMOTE_ADDR")elseremoteaddr=Request.ServerVariables("H

小技巧:在Asp中获取客户端MAC地址的方法

技巧|客户端 本程序属于一种特别的方法.使用范围比较有限,而且有一定的危险性.借鉴了asp后门里的一些方法.下面是程序代码. <%     dim remoteaddr if Request.ServerVariables("HTTP_X_FORWARDED_FOR")=empty then remoteaddr=Request.ServerVariables("REMOTE_ADDR") else remoteaddr=Request.ServerVaria

php获取本机mac地址三种方法

 代码如下 复制代码 class getmacaddr {         var $return_array = array(); // 返回带有mac地址的字串数组         var $mac_addr;                 function getmacaddr($os_type)         {                 switch ( strtolower($os_type) )                 {                     

ASP获取客户端MAC地址(源代码)

客户端|源代码 本程序属于一种特别的方法.使用范围比较有限,而且有一定的危险性.借鉴了asp后门里的一些方法.下面是程序代码. <% dim remoteaddr if Request.ServerVariables("HTTP_X_FORWARDED_FOR")=empty then remoteaddr=Request.ServerVariables("REMOTE_ADDR") else remoteaddr=Request.ServerVariable

php/js获取客户端mac地址的实现代码

这篇文章主要介绍了如何在php与js中分别获取客户度mac地址的方法,需要的朋友可以参考下   废话不多讲,直接上代码吧! 复制代码 代码如下: <?php   class MacAddr {       public $returnArray = array();        public $macAddr;       function __contruct($os_type=null){         if(is_null($os_type)) $os_type = PHP_OS;  

修改Win7 MAC地址三种方法

  方法一:使用Win7MAC地址修改工具1,只适用于windows7系统的网卡MAC地址修改.XP的可以用,但没做什么测试.2,部分windows7下的无线网卡地址无法修改,理论上也可以使用本软件修改.3,修改MAC地址前,请先在开始菜单-运行,输入cmd打开控制台,输入getmac获取原来网卡MAC并记下来,用于以后可以改回来.4,软件使用方法很简单,只需在下拉列表选择所要修改的网卡,然后在文本框里面输入一个新的MAC地址,比如EF2d32BC6525(注意不要加横杠),然后点击修改按钮即可

ASP获取客户端MAC地址

本程序属于一种特别的方法.使用范围比较有限,而且有一定的危险性.借鉴了asp后门里的一些方法.下面是程序代码. <%dim remoteaddrif Request.ServerVariables("HTTP_X_FORWARDED_FOR")=empty thenremoteaddr=Request.ServerVariables("REMOTE_ADDR")elseremoteaddr=Request.ServerVariables("HTTP_