11

次の問題があります: Web サーバーがあります。この Web サーバーはルーターの背後にあります。問題は、さらなる目的のためにサーバー上で Web サイトを開くクライアントの MAC アドレスが必要なことです。ActiveX オブジェクトを介して MAC アドレスを取得しようとしましたが、クライアントには WMI がインストールされている必要があります。実際のコードは次のとおりです。

<!DOCTYPE  HTML  PUBLIC  "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
  <head>
        <title></title>
        <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
        <script id="clientEventHandlersJS" language="javascript">

function Button1_onclick() {
  var locator = new ActiveXObject("WbemScripting.SWbemLocator");
  var service = locator.ConnectServer(".");
  var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
  var e = new Enumerator (properties);
  document.write("<table border=1>");
  dispHeading();
  for (;!e.atEnd();e.moveNext ())
  {
        var p = e.item ();
        document.write("<tr>");
        document.write("<td>" + p.Caption + "</td>");
        document.write("<td>" + p.IPFilterSecurityEnabled + "</td>");
        document.write("<td>" + p.IPPortSecurityEnabled + "</td>");
        document.write("<td>" + p.IPXAddress + "</td>");
        document.write("<td>" + p.IPXEnabled + "</td>");
        document.write("<td>" + p.IPXNetworkNumber + "</td>");
        document.write("<td>" + p.MACAddress + "</td>");
        document.write("<td>" + p.WINSPrimaryServer + "</td>");
        document.write("<td>" + p.WINSSecondaryServer + "</td>");
        document.write("</tr>");
  }
  document.write("</table>");
}

function dispHeading()
{
    document.write("<thead>");
    document.write("<td>Caption</td>");
    document.write("<td>IPFilterSecurityEnabled</td>");
    document.write("<td>IPPortSecurityEnabled</td>");
    document.write("<td>IPXAddress</td>");
    document.write("<td>IPXEnabled</td>");
    document.write("<td>IPXNetworkNumber</td>");
    document.write("<td>MACAddress</td>");
    document.write("<td>WINSPrimaryServer</td>");
    document.write("<td>WINSSecondaryServer</td>");
    document.write("</thead>");
}

        </script>
  </head>
  <body>

        <INPUT id="Button1" type="button" value="Button" name="Button1" language="javascript" onclick="return Button1_onclick()">
  </body>

ボタンをクリックすると、ネットワーク構成を含むテーブルが返されるはずですが、それはうまくいきません。ブラウザ経由でクライアントの MAC アドレスを取得するための別の解決策があるかどうかを知りたいです。また、Internet Explorer での使用を制限したくありません。よろしくお願いします。

よろしく、クリス

4

2 に答える 2

7

これはJavaアプレットを使用して実行できるようです。https: //forums.oracle.com/forums/thread.jspa?threadID=1144276およびhttp://techdetails.agwego.com/2008/02/11のpoststを参照してください。 /37/

これに対するセキュリティ警告にユーザーが同意する必要があるかどうかわからないので、私は試していません。

ActiveXはWindows(およびIEのみ)でのみ機能し、標準のHTMLまたはJavaScriptでMACアドレスを取得するためのそのようなAPIはないため、おそらくこれ以上の方法はありません。Flashがこれに役立つかどうかはわかりませんが、私はそれを疑っています。

ただし、ユーザーのMACアドレスを取得する理由は正しいように思われるかもしれませんが、スプーフィング/変更される可能性があり、特定の状況では正しく表示されない可能性があるため、情報を推測することはお勧めできません。問題のより良い解決策を思い付くことができれば(MACアドレスの取得を伴わない)、より良い結果が得られます。

于 2012-04-23T09:08:07.190 に答える