JavaScript中的MAC地址

Adh*_*pta 94 javascript mac-address

我知道我们可以通过IE(ActiveX对象)获取用户的MAC地址.

有没有办法使用JavaScript获取用户的MAC地址?

Gre*_*her 52

我同意之前的所有答案,如果您能够直接从Javascript执行此操作,那将是一个隐私/安全漏洞.我能想到两件事:

  • 使用Java(带有签名的applet)
  • 使用签署的Javascript,这在FF(和Mozilla一般)比正常JS获取更高的权限(但它是相当复杂的设置)

  • 我很想知道,我们可以通过 JavaScript 从用户那里获得一个独特的信息,比如 mac 地址或序列号或类似的信息吗?还是电脑名? (3认同)

Gat*_*ler 51

快速而简单的答案是否定的.

Javascript是一种高级语言,无法访问此类信息.

  • 我真的不认为作为"高级语言"与MAC地址有任何关系,因为任何服务器端编程语言都允许您访问ARP表,甚至间接访问(例如通过子进程).我认为"客户端语言"会更好...... (21认同)
  • 我快速浏览了一下Google,我读到的所有页面都是IE唯一依赖于使用ActiveX对象的解决方案.如果你可以发布一个链接,否则...... (13认同)
  • 高级语言没有理由无法访问低级硬件信息.在这种情况下,这不会发生,因为这将是一个安全问题. (5认同)

Vin*_*ert 27

不,你不能在JavaScript中获取MAC地址,主要是因为MAC地址唯一地标识正在运行的计算机,因此它将是一个安全漏洞.

现在,如果你需要的只是一个唯一的标识符,我建议你自己使用一些加密算法创建一个并将其存储在cookie中.

如果您确实需要知道计算机的MAC地址并且您正在为内部应用程序开发,那么我建议您使用外部组件来执行此操作:用于IE的ActiveX,用于Firefox的XPCOM(作为扩展安装).

  • @Michael维基百科列出了几个[UUID实现](http://en.wikipedia.org/wiki/Universally_unique_identifier#Implementations) (2认同)

Rya*_*arn 6

如果这是针对 Intranet 应用程序并且所有客户端都使用 DHCP,则可以向 DHCP 服务器查询给定 IP 地址的 MAC 地址。


Sei*_*bar 6

不.ActiveX可以做到这一点的原因是因为ActiveX是一个在客户端机器上运行的小应用程序.

我认为通过JavaScript访问此类信息将是一个安全漏洞.


小智 5

我正在寻找同样的问题并偶然发现了以下代码。

如何获取客户端MAC地址(Web):

要获取客户端MAC地址,我们只能依靠JavaScript和微软的Active X控件。如果IE启用了Active X,它只能在IE中工作。由于 ActiveXObject 在 Firefox 中不可用,因此它不能在 Firefox 中工作,但在 IE 中工作正常。

该脚本仅适用于 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();
Run Code Online (Sandbox Code Playgroud)
<div id='box'></div>
Run Code Online (Sandbox Code Playgroud)