web-dev-qa-db-fra.com

Obtenir l'adresse MAC d'un client avec un navigateur

J'ai le problème suivant: J'ai un serveur Web. Ce serveur Web est derrière un routeur. Le problème est que j'ai besoin de l'adresse MAC d'un client qui ouvre un site Web sur le serveur à d'autres fins. J'ai déjà essayé d'obtenir l'adresse MAC via un objet ActiveX, mais le client doit installer WMI. Voici le code actuel:

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

Lorsque vous cliquez sur le bouton, il devrait retourner une table avec la configuration du réseau, mais cela ne fonctionne pas pour moi. J'aimerais savoir s'il existe une autre solution pour obtenir l'adresse MAC d'un client via un navigateur. Je ne veux pas non plus limiter l'utilisation d'Internet Explorer. Merci d'avance pour votre aide.

Cordialement, Chris

8
chris6523

Il semble que vous puissiez le faire à l’aide d’une applet Java. Voir postst à https://forums.Oracle.com/forums/thread.jspa?threadID=1144276 et http://techdetails.agwego.com/2008/02/11/37/ .

Pas sûr que vous ayez besoin que l'utilisateur accepte un avertissement de sécurité pour cela ou pas, je ne l'ai pas essayé.

Il n'y a probablement pas de meilleur moyen, car ActiveX ne fonctionnera que sous Windows (et IE uniquement), et aucune API de ce type ne permet d'obtenir une adresse MAC dans un code HTML ou JavaScript standard. Je ne sais pas si Flash peut être utile pour cela, mais j'en doute.

Cependant, votre raison d'obtenir l'adresse MAC de l'utilisateur peut sembler valide, mais je pense toujours que ce n'est pas une bonne idée de déduire une information, car elle peut être falsifiée/modifiée et peut ne pas s'afficher correctement dans certaines situations. Vous feriez mieux si vous pouviez trouver une meilleure solution à votre problème (ne pas impliquer de saisir des adresses MAC).

5
kuba

Dans mon projet précédent. nous avons utilisé websocket dans le navigateur javascript pour communiquer avec un code natif, une dll C #, s'exécutant sur le même ordinateur. Le code natif peut récupérer toutes les informations système, adresses MAC et autres informations système telles que la mémoire, l’espace disque, etc. La totalité de l'application (navigateur Chrome + code natif) a été téléchargée sur le client à l'aide de install shield. 

0
Feng Zhang