MAC-Adressen in JavaScript

101

Ich weiß, dass wir die MAC-Adresse eines Benutzers über IE (ActiveX-Objekte) erhalten können.

Gibt es eine Möglichkeit, die MAC-Adresse eines Benutzers mithilfe von JavaScript abzurufen?

Adhip Gupta
quelle

Antworten:

56

Ich stimme allen vorherigen Antworten zu, dass es eine Datenschutz- / Sicherheitslücke wäre, wenn Sie dies direkt über Javascript tun könnten. Ich kann mir zwei Dinge vorstellen:

  • Verwenden von Java (mit einem signierten Applet)
  • Verwenden von signiertem Javascript, das in FF (und Mozilla im Allgemeinen) höhere Berechtigungen als normales JS erhält (die Einrichtung ist jedoch ziemlich kompliziert).
Grauer Panther
quelle
1
Ich war neugierig zu wissen, können wir vom Benutzer über JavaScript eindeutige Informationen wie Mac-Adresse oder Seriennummer oder ähnliches erhalten? Oder PC-Name?
Flamur Beqiraj
55

Die schnelle und einfache Antwort lautet Nein.

Javascript ist eine ziemlich hohe Sprache und hat keinen Zugriff auf diese Art von Informationen.

GateKiller
quelle
Was ist dann mit all dem Google-Suchergebnis, das Beispielcodes bereitstellt, um die MAC-Adresse zu erhalten
Moon
14
Ich habe mich kurz bei Google umgesehen und alle Seiten, die ich gelesen habe, waren reine IE-Lösungen, die auf der Verwendung von ActiveX-Objekten beruhten. Wenn Sie einen Link posten könnten, der etwas anderes zeigt ...
GateKiller
25
Ich glaube wirklich nicht, dass eine "Hochsprache" etwas mit MAC-Adressen zu tun hat, da Sie mit jeder serverseitigen Programmiersprache auch indirekt (z. B. über einen Unterprozess) auf die ARP-Tabelle zugreifen können. Ich denke, "clientseitige Sprache" würde besser funktionieren ...
kirbyfan64sos
6
Es gibt keinen Grund, warum eine Hochsprache keinen Zugriff auf Hardwareinformationen auf niedriger Ebene haben würde. In diesem Fall geschieht dies nicht, da dies ein Sicherheitsproblem darstellen würde.
nsn
31

Nein, Sie können die MAC-Adresse nicht in JavaScript abrufen, hauptsächlich weil die MAC-Adresse den laufenden Computer eindeutig identifiziert, sodass dies eine Sicherheitslücke darstellt.

Wenn Sie nur eine eindeutige Kennung benötigen, sollten Sie diese mithilfe eines kryptografischen Algorithmus selbst erstellen und in einem Cookie speichern.

Wenn Sie die MAC-Adresse des Computers wirklich kennen müssen UND für interne Anwendungen entwickeln, empfehlen wir Ihnen, eine externe Komponente zu verwenden: ActiveX für IE, XPCOM für Firefox (als Erweiterung installiert).

Vincent Robert
quelle
Kennen Sie eine externe Komponente für Safari?
Nein, ich habe tatsächlich vorgeschlagen, eine zu erstellen.
Vincent Robert
Wie schlagen Sie vor, eine eindeutige Kennung zu erstellen? Wie verwenden Sie einen kryptografischen Algorithmus, um sicherzustellen, dass jeder Benutzer, der ihn auf seinem Computer ausführt, eine eindeutige ID erhält?
Michael
2
@ Michael Wikipedia listet mehrere UUID-Implementierungen auf
Vincent Robert
7

Nee. Der Grund, warum ActiveX dies tun kann, ist, dass ActiveX eine kleine Anwendung ist, die auf dem Computer des Clients ausgeführt wird.

Ich würde mir vorstellen, dass der Zugriff auf solche Informationen über JavaScript eine Sicherheitslücke darstellt.

Seibar
quelle
4

Wenn dies für eine Intranetanwendung gilt und alle Clients DHCP verwenden, können Sie den DHCP-Server nach der MAC-Adresse für eine bestimmte IP-Adresse abfragen.

Ryan Ahearn
quelle
4

Ich suchte nach dem gleichen Problem und stieß auf den folgenden Code.

So erhalten Sie die Client-MAC-Adresse (Web):

Um die Client-MAC-Adresse nur auf diese Weise zu erhalten, können wir uns auf JavaScript und die ActiveX-Steuerung von Microsoft verlassen. Dies funktioniert nur im IE, wenn Active X für den IE aktiviert ist. Da das ActiveXObject mit dem Firefox nicht verfügbar ist, funktioniert es nicht mit dem Firefox und funktioniert im IE einwandfrei.

Dieses Skript ist nur für den Internet Explorer:

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>

Ad Kahn
quelle