it-swarm.com.de

Abrufen der MAC-Adresse eines Clients mit einem Browser

Ich habe folgendes Problem: Ich habe einen Webserver. Dieser Webserver befindet sich hinter einem Router. Das Problem ist, ich brauche die MAC-Adresse eines Clients, der eine Website auf dem Server für weitere Zwecke öffnet. Ich habe bereits versucht, die MAC-Adresse über ein ActiveX-Objekt zu erhalten, aber für den Client muss WMI installiert sein. Hier ist der eigentliche Code:

<!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>

Wenn Sie auf die Schaltfläche klicken, sollte eine Tabelle mit der Netzwerkkonfiguration angezeigt werden. Dies funktioniert jedoch nicht für mich. Ich würde gerne wissen, ob es eine andere Lösung gibt, um die MAC-Adresse eines Clients über einen Browser zu erhalten. Ich möchte auch die Verwendung von Internet Explorer nicht einschränken. Vielen Dank im Voraus für Ihre Hilfe.

Grüße, Chris

8
chris6523

Es scheint, dass Sie dies mit einem Java-Applet tun können, siehe postst unter https://forums.Oracle.com/forums/thread.jspa?threadID=1144276 und http://techdetails.agwego.com/2008/02/11/37/ .

Ich bin nicht sicher, ob der Benutzer einer Sicherheitswarnung zustimmen muss oder nicht. Ich habe es nicht versucht.

Es gibt wahrscheinlich keinen besseren Weg, da ActiveX nur unter Windows (und nur IE) funktioniert, und es gibt keine solche API, um die MAC-Adresse in einem beliebigen HTML oder JavaScript zu erhalten. Ich weiß nicht, ob Flash dafür nützlich sein kann, aber ich bezweifle das.

Ihr Grund, die MAC-Adresse des Benutzers zu erhalten, mag zwar gültig sein, aber ich denke immer noch, dass es keine gute Idee ist, Informationen abzuleiten, da diese gefälscht/geändert werden können und in bestimmten Situationen möglicherweise nicht richtig angezeigt werden. Sie würden es besser machen, wenn Sie eine bessere Lösung für Ihr Problem finden könnten (ohne dass MAC-Adressen abgerufen werden müssen).

5
kuba

In meinem vorherigen Projekt. Wir verwendeten Websocket in Browser-Javascript, um mit einem nativen Code, einer C # -Dll, zu kommunizieren, die auf demselben Computer ausgeführt wird. Der native Code kann alle Systeminformationen, MAC-Adressen und andere Systeminformationen abrufen, z. B. Speicher, Speicherplatz usw. Mit Node.js können Sie C # auch ersetzen, um nur die Grenzen der Windows-Maschine und der MAC-Maschine zu durchbrechen. Die gesamte App (Chrome-Browser + nativer Code) wurde mit Install Shield auf den Client heruntergeladen. 

0
Feng Zhang