asp.net(c#) 取得网卡mac地址

摘要:
当谈到如何获取网卡的MAC地址时,我们不得不讨论dos命令:NBTSTAT。以下是简要介绍:1。特定功能此命令用于显示基于本地计算机和远程计算机的TCP/IP协议的NetBIOS统计信息、NetBIOS名称表和NetBIOS名称缓存。NBTSTAT可以刷新NetBIOS名称缓存和注册的Windows Internet名称服务名称-AIPAddress显示远程计算机的NetBIOS名称表,其名称由远程计算机的IP地址指定。也就是说,MACAddress=00-18-F3-A7-E1-56所以在asp.net中,我们也使用这个原理来首先获取指定Ip的所有信息,然后使用正则表达式来获取我们想要的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地址的,有空研究下。结果如下图:

asp.net(c#) 取得网卡mac地址第1张

看到网卡的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

 

免责声明:文章转载自《asp.net(c#) 取得网卡mac地址》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java IO模型知识梳理财务凭证替代(Substitutions) [GGB1/OBBH] 和激活替代下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

分布式系统详解--基础知识(概论)

  一、 引言         由于网上介绍的分布式的系统讲解并没有多少,所以在这儿就希望可以写一套系统的分布式的详解,未来也结合springboot的搭建分布式系统进行详细构建。也愿意坚持写下去,写给自己也分享给大家,希望大家可以提出宝贵的意见,一同长进。哈哈。。第一篇文章,开个头。 二、分布式定义。   了解起来分布式呢,顺便也介绍一下集群,这两个概念...

MAC M1安装kettle spoon

*kettle原生不支持m1运行,要配置强制在intel模式下运行shell 然后选择shell tab启动运行命令 env /usr/bin/arch -x86_64 ``/bin/zsh --login *安装jdk 版本必须为1.8.0_251,试过很多个jdk版本都报错。jdk下载地址 https://www.oracle.com/java/...

qemu基本使用

1、qemu的安装   请参考家用路由器0day漏洞挖掘技术这本书 2、基本使用   qemu有主要如下两种运作模式: 用户模式(User Mode),亦称使用者模式。qemu能启动那些为不同中央处理器编译的Linux程序。 模拟模式(System Mode),亦成为系统模式。qemu能模拟整个计算机系统,包括中央处理器及其他周边设备,它使能为跨平台编写...

anyproxy-windows平台安装和抓手机app上https请求

前言 做接口测试肯定离不开抓包,目前比较流行的抓包工具是fiddler和charles,相信并不陌生。这里介绍一个阿里公司研发的一个抓包神器,只需打开web页面,就能抓到手机app上的http和https请求了。这样就有个好处,当一个公司测试团队有多个人的时候,只需搭建一个AnyProxy服务,其它小伙伴浏览器上打开AnyProxy页面,手机上设置个代理就...

镜像的各种版本区别

1 DVD版:这个是常用版本,就是普通安装版了,推荐大家安装。里面包含大量的常用软件,大部分情况下安装时无需再在线下载,体积为4G。 2 Everything版:顾名思义,包含了所有软件组件,当然体积也庞大,高达7G。 3 LiveCD版:就是一个光盘CentOS系统,可通过光盘启动电脑,启动出CentOS系统,也有图形界面,也有终端。也可以安装到计算机,...

联想笔记本如何安装固态硬盘-联想G50-80如何安装固态硬盘(全流程+装系统)

在现在,大家普遍想让自己的电脑运行的更流畅,于是装固态就成了一个不错的选择。下面以联想G50-80为例介绍如何加装固态。 一、硬件准备 联想G50-80 东芝固态硬盘:TOSHIBA TR2000 480G(参考价格:379元人民币) 启动U盘(用于装系统,需要事先制作好) 二、详细步骤 1、断电、关机。拔掉电源插头,关机。一定确保电脑断电、关机,严禁...