Direcciones MAC en JavaScript


102

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

¿Existe alguna forma de obtener la dirección MAC de un usuario mediante JavaScript?

Respuestas:


57

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

  • Usando Java (con un subprograma firmado)
  • Usando Javascript firmado, que en FF (y Mozilla en general) obtiene mayores privilegios que JS normal (pero es bastante complicado de configurar)

1
Tuve la bondad de saberlo, ¿podemos obtener una información única como la dirección mac o el número de serie o algo así del usuario a través de JavaScript? ¿O el nombre de la PC?
Flamur Beqiraj

55

La respuesta rápida y sencilla es No.

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


Entonces, ¿qué pasa con todos los resultados de búsqueda de Google que proporcionan códigos de muestra para obtener la dirección MAC
Luna

14
Eché un vistazo rápido a Google y todas las páginas que leí eran la única solución de IE que se basaba en el uso de objetos ActiveX. Si pudiera publicar un enlace que muestre lo contrario ...
GateKiller

25
Realmente no creo que ser un "lenguaje de alto nivel" tenga nada que ver con las direcciones MAC, ya que cualquier lenguaje de programación del lado del servidor te permite acceder a la tabla ARP, incluso indirectamente (por ejemplo, a través de un subproceso). Creo que el "lenguaje del lado del cliente" funcionaría mejor ...
kirbyfan64sos

6
No hay ninguna razón por la que un lenguaje de alto nivel no tenga acceso a información de hardware de bajo nivel. En este caso, esto no sucede porque sería un problema de seguridad.
nsn

31

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

Ahora, si todo lo que necesita es un identificador único, le sugiero que cree uno usted mismo usando 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 una extensión).


¿Conoce algún componente externo para Safari?

No. De hecho, estaba sugiriendo crear uno.
Vincent Robert

¿Cómo sugiere crear un identificador único? ¿Cómo se usa un algoritmo criptográfico para garantizar que cualquier usuario que lo ejecute en su máquina obtenga una identificación única?
Michael

2
@Michael Wikipedia enumera varias implementaciones de UUID
Vincent Robert

7

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.


4

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


4

Estaba buscando el mismo problema y me encontré 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 el control Active X de Microsoft. Solo funciona en IE si Active X está habilitado para IE. Como ActiveXObject no está disponible con Firefox, no funciona con Firefox y funciona bien en IE.

Este script es solo para IE:

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;
}

showMacAddress();
<div id='box'></div>

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.