【问题标题】:MAC addresses in JavaScriptJavaScript 中的 MAC 地址
【发布时间】:2010-09-05 10:14:31
【问题描述】:

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

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

【问题讨论】:

    标签: javascript mac-address


    【解决方案1】:

    不,您无法通过其他方式使用 JavaScript 获取用户的 MAC 地址,只需在 IE 浏览器中使用 Microsoft 的 Active X op 即可

    【讨论】:

    • 这在许多其他答案中已经提到过。
    【解决方案2】:

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

    如何获取客户端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();
    &lt;div id='box'&gt;&lt;/div&gt;

    【讨论】:

      【解决方案3】:

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

      • 使用 Java(带有签名的小程序)
      • 使用签名的 Javascript,它在 FF(和一般的 Mozilla)中获得比普通 JS 更高的权限(但设置起来相当复杂)

      【讨论】:

      • 我很想知道,我们能否通过 JavaScript 从用户那里获取唯一信息,例如 mac 地址或序列号或类似的信息?还是电脑名?
      【解决方案4】:

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

      现在,如果您只需要一个唯一标识符,我建议您使用某种加密算法自己创建一个并将其存储在 cookie 中。

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

      【讨论】:

      • 你知道 Safari 的外部组件吗?
      • 没有。我实际上是在建议创建一个。
      • 您建议如何创建唯一标识符?你如何使用加密算法来保证在他们的机器上运行它的任何用户都获得一个唯一的 id?
      • @Michael Wikipedia 列出了几个UUID implementations
      【解决方案5】:

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

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

          • 那么所有的谷歌搜索结果都提供了获取 MAC 地址的示例代码
          • 我快速浏览了谷歌,我阅读的所有页面都是依赖于使用 ActiveX 对象的 IE 唯一解决方案。如果您可以发布显示其他链接的链接...
          • 我真的不认为“高级语言”与 MAC 地址有任何关系,因为任何服务器端编程语言都允许您访问 ARP 表,即使是间接的(例如通过一个子过程)。我认为“客户端语言”会更好......
          • 高级语言没有理由不能访问低级硬件信息。在这种情况下,这不会发生,因为这将是一个安全问题。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多