2009-08-31 166 views
1

ASP.NET(C#)WebAppでは、訪問者のPCのIPを簡単に取得できますが、訪問者のPCのMACアドレスをASP.NET WebAppで取得するにはどうすればいいですか?訪問者のPCのMACアドレスをASP.NET WebAppで取得する方法は?

このASP.NETアプリケーションは、当社の社内イントラネット上で実行されており、訪問者も当社の同じイントライントラネットにあります。

+0

同じイントラネット上にいても、MACにアクセスできることを保証するものではありません。あなたは、同じネットワークセグメント上にいる必要があります(私は完全に用語がわかりません)。これは、あなたのサーバーとクライアントの間にルータがないことを意味します。あなたが小さな(または設定の悪い)ネットワークにいない限り、おそらくそうではありません。 –

+0

MACアドレスは、IPアドレスと違っていなくてもなりすますことができ、いずれの形式のセキュリティにも使用できません。 – UnkwnTech

+0

はい、WebサーバーとクライアントPCは同じルータを使用しており、当社の同じネットワーク内にあります。 – Mike108

答えて

6

MACアドレスはIP header(または上記の他のプロトコル)の一部ではないため、表示されているすべてがHTTPトラフィックの場合は使用できません。

EDIT(OPのアップデート後):クライアントとサーバが同じ内部ネットワーク上にあるため、MACアドレスではなくIPアドレスからホスト名を取得する方が良いでしょうか? IPアドレスに基づいてホスト名を簡単に検索できます。

+1

具体的には、MACアドレスは、あなたとそのルータの間の最初のルータを超えて(ネットワーク通信が行われる限り)役に立たない。 –

+0

なぜdownvote? –

+0

@ -1:*が利用可能で、IPヘッダーの一部ではないと言うのは無関係です。なぜなら、それは物理的なアドレッシングの場所ではないからです。それはCPUレジスタにあるものがWindows APIの一部ではないと言っているので、利用できません。 –

1

これは簡単にはできません。 で、MACアドレスとIPアドレスの間の変換を可能にするARPなどのプロトコルですが、このトラフィックは一般にファイアウォールの背後にあり、公開Webサイトでは利用できません。

イントラネットでは、ASP.NETを経由せずに何かを行うことができます。この情報を取得するには、他のメカニズムを使用する必要がありますが、一般的に、これらのツール(パケットスニッファなど)は開発者が利用できないため、企業のISポリシーに違反する可能性があります。

3

これは、ユーザーの代わりにこの情報を取得するためにクライアントブラウザで実行されるActiveXコントロールを作成する場合にのみ可能です。一方、javascriptが情報を取得するCOMオブジェクトをインスタンス化できる場合、クライアント上でJavaScriptを使用することは可能です。私が考えることができる他の唯一の方法は、IPが捕捉された後にARP要求を行うWindowsサービスを用意することです。

1

同じサブネット上にいるので、WebサーバのARPテーブルを取得するには、P/InvokeGetIpNetTableを入力します。これをリアルタイムで行うと、追加の作業は必要ありません。クライアントと会話しているので、ARP情報があります。それ以外の場合は、ARPリクエストまたはIPトラフィック(例えば、ap ing)をキャッシュに入れるために構築する必要があります。また、DHCPやその他のネットワークの不具合(マシンの電源が切れるなど)により、後でIPをMACに変換すると、別の答えが得られるでしょう。

外部クライアント(つまり、ルータを経由するもの)はtableには表示されませんので、それにも対処できるようにしてください。何らかの理由でMACが必要な場合は、技術的にはルータのMACです。

関連する問題