zoukankan      html  css  js  c++  java
  • asp.net(c#) 取得网卡mac地址

    讲到如何取得网卡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地址。

    详细代码请参考下面,代码多有参考网络,为我所用,非我所想。

    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 "找不到主机信息";
           }      
     
         }
    }

    运行后结果:

    00-18-F3-A7-E1-57

     

  • 相关阅读:
    springboot @ConfigurationProperties 中文乱码解决方案
    Centos 7安装Mysql 5.7详细教程,Linux安装Mysql 5.7详细教程
    Centos7 mysql Unit not found,Centos7 在线安装mysql 5.7
    Windows Tomcat安装配置,Tomcat 启动闪退,Windows Tomcat中文乱码解决
    ubuntu 切换到 root 用户
    一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI
    快速实现一个室内空气质量检测仪
    外设驱动库开发笔记36:NTC负温度系数热电阻测温驱动
    外设驱动库开发笔记34:OLED显示屏驱动
    滤波器开发之五:基于算术平均的限幅滤波器
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1832282.html
Copyright © 2011-2022 走看看