2012年10月31日 星期三

ASP.NET取得網卡MAC地址


详细代码请参考下面,代码多有参考网络,为我所用(客户端)。
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

//引入相应的空间信息
using System.Text.RegularExpressions;
using System.Diagnostics;



public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //此处输入Ip地址,你可以做成接受文本框的值进行查询
        Response.Write(GetCustomerMac("192.168.168.242"));
    }

  
    //这里是关键函数了
    public string GetCustomerMac(string IP) 
    { 
       string dirResults=""; 
       ProcessStartInfo psi  = new ProcessStartInfo(); 
       Process proc = new Process(); 
       psi.FileName = "nbtstat"; 
       psi.RedirectStandardInput = false; 
       psi.RedirectStandardOutput = true; 
       psi.Arguments = "-a " + IP; 
       psi.UseShellExecute = false; 
       proc = Process.Start(psi); 
       dirResults = proc.StandardOutput.ReadToEnd(); 
       proc.WaitForExit();
        
       //匹配mac地址
       Match m = Regex.Match(dirResults, "\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w\\w");

       //若匹配成功则返回mac,否则返回找不到主机信息
       if (m.ToString() != "")
       {
           return m.ToString();
       }
       else
       {
           return "找不到主机信息";
       }       

     }
}
讲到如何取得网卡mac地址,就不得不讲到dos命令:NBTSTAT,下面简单介绍下(客户端):
1. 具体功能
  该命令用于显示本地计算机和远程计算机的基于 TCP/IP(NetBT) 协议的 NetBIOS 统计资料、 NetBIOS 名称表和 NetBIOS 名称缓存。 NBTSTAT 可以刷新 NetBIOS 名称缓存和注册的 Windows Internet 名称服务 (WINS) 名称。使用不带参数的 NBTSTAT 显示帮助。
2. 语法详解
nbtstat [-a remotename] [-A IPaddress] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [Interval]
3. 参数说明
-a remotename 显示远程计算机的 NetBIOS 名称表, 其中, remote name 是远程计算机的 NetBIOS 计算机名称。 NetBIOS 名称表是运行在该计算机上的应用程序使用的 NetBIOS 名称列表。 
-A IPaddress 显示远程计算机的 NetBIOS 名称表, 其名称由远程计算机的 IP 地址指定 ( 以小数点分隔 ) 。 
-c 显示 NetBIOS 名称缓存内容、 NetBIOS 名称表及其解析的各个地址。 
-n 显示本地计算机的 NetBIOS 名称表。 Registered 中的状态表明该名称是通过广播或 WINS ******注册的。 
-r 显示 NetBIOS 名称解析统计资料。 在配置为使用 WINS 的 Windows 计算机上,该参数将返回已通过广播和 WINS 解析和注册的名称号码。 
-R 清除 NetBIOS 名称缓存的内容并从 Lmhosts 文件中重新加载带有 #PRE 标记的项目。 
-RR 重新释放并刷新通过 WINS 注册的本地计算机的 NetBIOS 名称。 
-s 显示 NetBIOS 客户和******会话,并试图将目标 IP 地址转化为名称。 
-S 显示 NetBIOS 客户和******会话,只通过 IP 地址列出远程计算机。
  Interval 重新显示选择的统计资料,可以中断每个显示之间的 Interval 中指定的秒数。 按Ctrl+C 停止重新显示统计信息。如果省略该参数, NBTSTAT 将只显示一次当前的配置信息。
我们试下它的功能:在DOS窗口下,输入:
nbtstat -a 192.168.168.242
       这里的192.168.168.242是我的本机IP,测试中发现呆会的程序并不能取得非本地的mac地址,也就是说只能取得******的网卡mac地址,而不能取得客户端的网卡mac地址,记得以前用一些黑客软件的时候可以办到获取对方的网卡mac地址的,有空研究下。结果如下图:
看到网卡的MAC地址了吧!也就是:
MAC Address = 00-18-F3-A7-E1-56
所以在asp.net中我们也是根据这个原理,先取得指定Ip的所有信息后,再用正则取得我们要的mac地址。

法二 (载自 http://topic.csdn.net/t/20020619/14/815413.html)(******端)
using   System.Management;   ...   
    ManagementClass   mc   =   new   ManagementClass("Win32_NetworkAdapterConfiguration");   
    ManagementObjectCollection   moc   =   mc.GetInstances();     
  foreach(ManagementObject   mo   in   moc)     
  {     
  if((bool)mo["IPEnabled"]   ==   true)   
                    {   
        Console.WriteLine("MAC   address\t{0}",   mo["MacAddress"].ToString());     
                          mo.Dispose();     
  }     
  }
如果系统提示找不到名字空间Management,   
  1.   在Solution   Explorer中鼠标右键单击References,选择Add   Reference...     
  2.   此时会弹出Add   Reference对话框,选中.NET选项卡。   
  3.   选中System.Management,点select   
  4.   点击"OK"。

1 則留言:

  1. 語軒閣: Asp.Net取得網卡mac地址 >>>>> Download Now

    >>>>> Download Full

    語軒閣: Asp.Net取得網卡mac地址 >>>>> Download LINK

    >>>>> Download Now

    語軒閣: Asp.Net取得網卡mac地址 >>>>> Download Full

    >>>>> Download LINK V9

    回覆刪除