Direcciones MAC en JavaScript


Sé que podemos obtener la dirección MAC de un usuario a través de IE (objetos ActiveX).

¿Hay alguna forma de obtener la dirección MAC de un usuario usando JavaScript?

Author: p.campbell, 2008-08-06

7 answers

Estoy de acuerdo con todas las respuestas anteriores de que sería una vulnerabilidad de privacidad/seguridad si pudiera hacer esto directamente desde Javascript. Hay dos cosas que se me ocurren:

  • Usando Java (con un applet firmado)
  • Usando Javascript firmado, que en FF (y Mozilla en general) obtiene privilegios más altos que JS normal (pero es bastante complicado de configurar)
 38
Author: Grey Panther,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-14 06:21:12

La respuesta rápida y sencilla es No.

Javascript es un lenguaje de alto nivel y no tiene acceso a este tipo de información.

 44
Author: GateKiller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-06 13:45:00

No no puede obtener la dirección MAC en JavaScript, principalmente porque la dirección MAC identifica de forma única el equipo en ejecución, por lo que sería una vulnerabilidad de seguridad.

Ahora bien, si todo lo que necesita es un identificador único, le sugiero que cree uno usted mismo utilizando algún algoritmo criptográfico y lo almacene en una cookie.

Si realmente necesita saber la dirección MAC de la computadora y está desarrollando para aplicaciones internas, le sugiero que use un componente externo para hacerlo: ActiveX para IE, XPCOM para Firefox (instalado como extensión).

 22
Author: Vincent Robert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-11 16:34:49

No. La razón por la que ActiveX puede hacerlo es porque ActiveX es una pequeña aplicación que se ejecuta en la máquina del cliente.

Me imagino que el acceso a dicha información a través de JavaScript sería una vulnerabilidad de seguridad.

 5
Author: Seibar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-06 15:38:50

Si se trata de una aplicación de intranet y todos los clientes utilizan DHCP, puede consultar al servidor DHCP la dirección MAC de una dirección IP determinada.

 4
Author: Ryan Ahearn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-06 13:51:52

Estaba buscando el mismo problema y me topé con el siguiente código.

Cómo obtener la dirección MAC del cliente (Web):

Para obtener la dirección MAC del cliente solo podemos confiar en JavaScript y Active X control de Microsoft.It solo funciona en IE si Active X habilita para IE. Como ActiveXObject no está disponible con Firefox, no funciona con firefox y funciona bien en IE.

Este script es solo para IE:

<script language="javascript" type="text/javascript">
    function showMacAddress() {
        var obj = new ActiveXObject("WbemScripting.SWbemLocator");
        var s = obj.ConnectServer(".");
        var properties = s.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
        var e = new Enumerator(properties);
        var output;
        output = '<table border="0" cellPadding="5px" cellSpacing="1px" bgColor="#CCCCCC">';
        output = output + '<tr bgColor="#EAEAEA"><td>Caption</td><td>MACAddress</td></tr>';
        while (!e.atEnd()) {
            e.moveNext();
            var p = e.item();
            if (!p) continue;
            output = output + '<tr bgColor="#FFFFFF">';
            output = output + '<td>' + p.Caption; +'</td>';
            output = output + '<td>' + p.MACAddress + '</td>';
            output = output + '</tr>';
        }
        output = output + '</table>';
        document.getElementById("box").innerHTML = output;
    }
</script>
 0
Author: Ad Kahn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-05 11:22:54

No se puede acceder al MAC address, aunque se puede obtener el IP address del usuario

<script type="application/javascript">
    function getip(json){
      alert(json.ip);    // alerts the ip address
    }
</script>

<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip">
</script>

Referencia : (Ver aquí).

 -18
Author: Community,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:54:36