Indirizzi MAC in JavaScript


102

So che possiamo ottenere l'indirizzo MAC di un utente tramite IE (oggetti ActiveX).

Esiste un modo per ottenere l'indirizzo MAC di un utente utilizzando JavaScript?

Risposte:


57

Concordo con tutte le risposte precedenti che sarebbe una vulnerabilità di privacy / sicurezza se fossi in grado di farlo direttamente da Javascript. Ci sono due cose a cui posso pensare:

  • Utilizzo di Java (con un'applet firmata)
  • Utilizzo di Javascript firmato, che in FF (e Mozilla in generale) ottiene privilegi più elevati rispetto al normale JS (ma è abbastanza complicato da configurare)

1
Ero curioso di sapere, possiamo ottenere informazioni univoche come l'indirizzo MAC o il numero di serie o qualcosa del genere dall'utente tramite JavaScript? O il nome del PC?
Flamur Beqiraj

55

La risposta rapida e semplice è No.

Javascript è un linguaggio di alto livello e non ha accesso a questo tipo di informazioni.


allora che dire di tutti i risultati di ricerca di Google che forniscono codici di esempio per ottenere l'indirizzo MAC
Luna

14
Ho dato una rapida occhiata a Google e tutte le pagine che ho letto erano l'unica soluzione di IE che si basava sull'utilizzo di oggetti ActiveX. Se potessi pubblicare un link che mostri il contrario ...
GateKiller

25
Non credo proprio che essere un "linguaggio di alto livello" abbia nulla a che fare con gli indirizzi MAC, dal momento che qualsiasi linguaggio di programmazione lato server ti consente di accedere alla tabella ARP, anche indirettamente (ad esempio attraverso un sottoprocesso). Penso che il "linguaggio lato client" funzionerebbe meglio ...
kirbyfan64sos

6
Non c'è motivo per cui un linguaggio di alto livello non avrebbe accesso a informazioni hardware di basso livello. In questo caso ciò non accade perché sarebbe un problema di sicurezza.
nsn

31

No, non è possibile ottenere l'indirizzo MAC in JavaScript, principalmente perché l'indirizzo MAC identifica in modo univoco il computer in esecuzione, quindi sarebbe una vulnerabilità di sicurezza.

Ora, se tutto ciò di cui hai bisogno è un identificatore univoco, ti suggerisco di crearne uno tu stesso utilizzando un algoritmo crittografico e memorizzarlo in un cookie.

Se hai davvero bisogno di conoscere l'indirizzo MAC del computer E stai sviluppando per applicazioni interne, ti consiglio di utilizzare un componente esterno per farlo: ActiveX per IE, XPCOM per Firefox (installato come estensione).


Conosci un componente esterno per Safari?

No. In realtà stavo suggerendo di crearne uno.
Vincent Robert

come suggerisci di creare un identificatore univoco? come si utilizza un algoritmo crittografico per garantire che ogni utente che lo esegue sulla propria macchina ottenga un ID univoco?
Michael

2
@Michael Wikipedia elenca diverse implementazioni UUID
Vincent Robert

7

No. Il motivo per cui ActiveX può farlo è perché ActiveX è una piccola applicazione che viene eseguita sulla macchina del client.

Immagino che l'accesso a tali informazioni tramite JavaScript sarebbe una vulnerabilità di sicurezza.


4

Se si tratta di un'applicazione Intranet e tutti i client utilizzano DHCP, è possibile richiedere al server DHCP l'indirizzo MAC per un determinato indirizzo IP.


4

stavo cercando lo stesso problema e sono incappato nel seguente codice.

Come ottenere l'indirizzo MAC del client (Web):

Per ottenere l'unico indirizzo MAC del client, possiamo fare affidamento su JavaScript e sul controllo Active X di Microsoft. Funziona solo in IE se Active X abilita per IE. Poiché ActiveXObject non è disponibile con Firefox, non funziona con Firefox e funziona bene in IE.

Questo script è solo per 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>

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.