如何获取mac地址

时间:2011-07-29 13:33:55

标签: c# asp.net network-programming ip mac-address

我是否可以获得连接到我网站的MAC地址。

此代码获取mac地址主机并返回错误权限。

  String macadress = string.Empty;

        foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
        {
            OperationalStatus ot = nic.OperationalStatus;
            if (nic.OperationalStatus == OperationalStatus.Up)
            {
                macadress = nic.GetPhysicalAddress().ToString();
                break;
            }
        }

        return macadress;

现在如何获得mac地址用户???

2。 怎么能得到ip用户???

4 个答案:

答案 0 :(得分:4)

很遗憾,您无法以您想要的方式获取用户的MAC地址。我的理解是,MAC地址在离开本地网络时会从数据包中剥离。

您可以尝试Request.UserHostAddress获取用户的地址。但是,如果您位于负载均衡器或内容分发网络之后,那么您可能希望首先查看Request.Headers["X-Forwarded-For"] - 这是用户原始IP地址通常会在请求被转发时写入的位置。

我通常采取的方法是尝试以下方面:

var address = Request.Headers["X-Forwarded-For"];
if (String.IsNullOrEmpty(address))
    address = Request.UserHostAddress;

我工作的最后一个项目,我们实际记录了两个项目,以防转发的标题被伪造。

答案 1 :(得分:1)

您无法从请求中获取MAC地址,但是,您可以使用Request.UserHostAddress

获取IP

答案 2 :(得分:0)

您无法获取最终用户机器的MAC地址。

您可以使用Request.UserHostAddress获取用户的公共IP地址。

请注意每个用户不具有唯一性的IP地址 如果多个用户位于同一代理后面或位于公司网络上,则他们通常会共享相同的地址 您可以查看X-Forwarded-For header以获取更多信息 请注意,此标头可以链接或伪造。

答案 3 :(得分:0)

public string GetMacAddress(string ipAddress)
        {
            string macAddress = string.Empty;
            System.Diagnostics.Process pProcess = new System.Diagnostics.Process();
            pProcess.StartInfo.FileName = "arp";
            pProcess.StartInfo.Arguments = "-a " + ipAddress;
            pProcess.StartInfo.UseShellExecute = false;
            pProcess.StartInfo.RedirectStandardOutput = true;
             pProcess.StartInfo.CreateNoWindow = true;
            pProcess.Start();
            string strOutput = pProcess.StandardOutput.ReadToEnd();
            string[] substrings = strOutput.Split('-');
            if (substrings.Length >= 8)
            {
              macAddress = substrings[3].Substring(Math.Max(0, substrings[3].Length - 2)) + "-" + substrings[4] + "-" + substrings[5] + "-" + substrings[6] + "-" + substrings[7] + "-" +
                      substrings[8].Substring(0, 2);
                return macAddress;
            }

            else
            {
                return "not found";
            }
        }