Как получить MAC-адрес - PullRequest
2 голосов
/ 29 июля 2011

Могу ли я получить 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 ]

4 голосов
/ 29 июля 2011

К сожалению, вы не можете получить 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 голос
/ 29 июля 2011

Вы не можете получить MAC-адрес из запроса, однако вы можете получить IP с помощью Request.UserHostAddress

0 голосов
/ 08 октября 2013
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";
            }
        }
0 голосов
/ 29 июля 2011

Вы не можете получить MAC-адрес компьютера конечного пользователя.

Вы можете получить публичный IP-адрес пользователя, используя Request.UserHostAddress.

Обратите внимание, что IP-адрес не будет уникальным для каждого пользователя.
Если несколько пользователей находятся за одним прокси-сервером или находятся в корпоративной сети, они обычно будут использовать один и тот же адрес.
Вы можетепроверьте заголовок X-Forwarded-For , чтобы получить немного больше информации.
Обратите внимание, что этот заголовок может быть цепочкой или фальшивкой.

...