0

私は ASP.NET MVC アプリケーションに取り組んでおり、ユーザーの MAC アドレスを取得したいと考えています。いくつかの調査の後、私はこのコードを見つけました:

string GetMacAddress()
{
    string macAddresses = "";
    foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
    {
        if (nic.NetworkInterfaceType != NetworkInterfaceType.Ethernet)
            continue;
        if (nic.OperationalStatus == OperationalStatus.Up)
        {
            macAddresses += nic.GetPhysicalAddress().ToString();
            break;
        }
    }

    return macAddresses;
}

エラーはありませんが、常に空のアドレスを取得します。これを解決する方法を知っている人はいますか?

4

3 に答える 3

8

私は mvc .net アプリケーションで作業しており、ユーザーの MAC アドレスを取得したいと考えています。

あなたはそれを忘れることができます、それは不可能です。Web サイトを閲覧しているクライアントの IP アドレスのみを取得できます。

実は入手方法は一つ。ビューに次を追加します。

@using (Html.BeginForm())
{
    @Html.Label("Mac", "Please enter your MAC address")
    @Html.TextBox("Mac")
    <button type="submit">OK</button>
}

および対応するコントローラー アクション内:

[HttpPost]
public ActionResult SomeAction(string mac)
{
    // if the user was kind enough to provide you his MAC address
    // you could read it from the mac argument
    // Of course he could have entered any MAC address he likes and
    // you have no way of verifying that
    ...
}

もう 1 つの可能性は、ActiveX コントロール (IE でのみ動作する) を開発し、ユーザーが自分の NIC の MAC アドレスを取得してサーバーに送信できるブラウザーにインストールできるようにすることです。

于 2012-08-22T11:19:11.610 に答える
1

投稿したコードは、ユーザーの MAC アドレスではなく、サイトをホストしているマシンの MAC アドレスを取得します。リモートの MAC アドレスを取得することは事実上不可能です。そのマシンで実行されているソフトウェアが、それを報告してくれるからです。

それができない場合は、パブリック IP アドレスを取得し、それを MAC に解決することを検討できます。私は過去にこれを行ったことがあります(どのように...思い出せません。それはずっと前の「ハッキング」の時代でした!)。私が言ったように、これはパブリック IP アドレス (ルーター、ファイアウォールなど) の MAC 解決を取得します。

インターネット上のどこかに、IANA が割り当てた MAC アドレスのリストがあり、どの MAC がどの会社に割り当てられているかがリストされています。これも役立つかもしれません。

倫理的には、ユーザーの MAC アドレスを取得するのは良い考えではないと思います。これは、ユーザーのマシンを指し示す一意のものであり、そのマシンのみです!

于 2012-08-22T11:27:20.710 に答える
0

これはあなたの問題かもしれません。

 if (nic.NetworkInterfaceType != NetworkInterfaceType.Ethernet) continue;

現在のほとんどの接続は

 NetworkInterfaceType.GigabitEthernet

選択に含めるだけ

http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkinterfacetype.aspxを参照してください。

于 2012-08-22T11:19:59.153 に答える