如何通过asp.net mvc c获取浏览网站的客户端的mac地址#

tit*_*iti 11 c# asp.net asp.net-mvc

我正试图从浏览我网站的客户端机器上获取mac地址,我已经习惯了:

using System.Management;
class Sample_ManagementClass
{
    public static int Main(string[] args)
    {
        ManagementClass objMC = new
        ManagementClass("Win32_NetworkAdapterConfiguration");
        ManagementObjectCollection objMOC = objMC.GetInstances();

        foreach (ManagementObject objMO in objMOC)
        {
            if (!(bool)objMO["ipEnabled"])
                continue;

            Console.WriteLine((string)objMO["MACAddress"]);
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

但它无法识别管理命名空间,所以我该怎么办?

jim*_*lan 15

遗憾的是,由于提供了防火墙,代理和ISP通用地址,因此无法可靠地获取客户端计算机的mac地址.但是,您可以使用以下命令获取IP地址:

var remoteIpAddress = Request.UserHostAddress;
Run Code Online (Sandbox Code Playgroud)

但是,这实际上可能代表或可能不代表客户端机器,更可能是ISP网关或其他一些IP地址.这是一个众所周知的问题,甚至google也发现使用客户端javascript很难破解(这里的想法是你通过js库获得实际的本地IP地址并将其传递给你的服务器函数).

[编辑] - 可能值得一看以下内容以获取问题的灵感/确认:

http://www.dotnetfunda.com/forums/thread2088-how-to-get-mac-address-of-client-machine.aspx

  • 它不可能获取客户端的mac地址,因为它位于以太网物理层,所以如果你的网站和客户端之间没有直接的物理链接......那不是因为防火墙 (5认同)

Chr*_*ris 5

一个人通常不可能仅从计算机的 IP 地址获取计算机的 MAC 地址。这两个地址来自不同的来源。简单地说,计算机自身的硬件配置决定了它的 MAC 地址,而它所连接的网络的配置决定了它的 IP 地址。但是,连接到同一 TCP/IP 本地网络的计算机可以确定彼此的 MAC 地址。TCP/IP 中包含的称为 ARP(地址解析协议)的技术使之成为可能。使用 ARP,每台计算机都会为它最近与之通信的每个设备维护一个 IP 和 MAC 地址列表。

来源