MAC-адреса в JavaScript

Я знаю, что мы можем получить MAC-адрес пользователя через IE (объекты ActiveX).

Есть ли способ получить MAC-адрес пользователя с помощью JavaScript?

6.08.2008 13:43:44
6 ОТВЕТОВ
РЕШЕНИЕ

Я согласен со всеми предыдущими ответами, что это будет уязвимость в отношении конфиденциальности / безопасности, если вы сможете сделать это непосредственно из Javascript. Я могу думать о двух вещах:

  • Использование Java (с подписанным апплетом)
  • Использование подписанного Javascript, который в FF (и Mozilla в целом) получает более высокие привилегии, чем обычный JS (но его довольно сложно настроить)
53
14.08.2008 06:21:12
Мне было приятно узнать, можем ли мы получить уникальную информацию, такую ​​как адрес Mac или серийный номер, или что-то подобное от пользователя через JavaScript? Или имя ПК?
Flamur Beqiraj 1.03.2019 12:49:20

Быстрый и простой ответ - нет.

Javascript является языком довольно высокого уровня и не имеет доступа к такого рода информации.

52
6.08.2008 13:45:00
тогда как насчет всех результатов поиска Google с примерами кодов для получения MAC-адреса
Moon 26.12.2010 02:53:13
Я быстро осмотрел Google, и все страницы, которые я прочитал, были единственным решением IE, в котором использовались объекты ActiveX. Если бы вы могли опубликовать ссылку, показывающую иначе ...
GateKiller 12.01.2011 16:52:43
Я действительно не думаю, что «язык высокого уровня» имеет какое-либо отношение к MAC-адресам, поскольку любой серверный язык программирования позволяет вам получить доступ к таблице ARP, даже косвенно (например, через подпроцесс). Я думаю, что "язык на стороне клиента" будет работать лучше ...
kirbyfan64sos 6.10.2016 19:51:58
Нет причин, по которым язык высокого уровня не имел бы доступа к информации об оборудовании низкого уровня. В этом случае этого не происходит, потому что это будет проблемой безопасности.
nsn 7.05.2017 09:37:39

Если это для приложения интрасети, и все клиенты используют DHCP, вы можете запросить у DHCP-сервера MAC-адрес для данного IP-адреса.

4
6.08.2008 13:51:52

Неа. ActiveX может сделать это потому, что ActiveX - это небольшое приложение, которое работает на компьютере клиента.

Я полагаю, что доступ к такой информации через JavaScript был бы уязвимостью безопасности.

7
6.08.2008 15:38:50

Нет, вы не можете получить MAC-адрес в JavaScript, главным образом потому, что MAC-адрес однозначно идентифицирует работающий компьютер, поэтому это будет уязвимость безопасности.

Теперь, если все, что вам нужно, это уникальный идентификатор, я предлагаю вам создать его самостоятельно, используя некоторый криптографический алгоритм, и сохранить его в файле cookie.

Если вам действительно нужно знать MAC-адрес компьютера И вы разрабатываете его для внутренних приложений, то я предлагаю вам использовать для этого внешний компонент: ActiveX для IE, XPCOM для Firefox (устанавливается как расширение).

29
11.08.2008 16:34:49
Знаете ли вы о внешнем компоненте для Safari?
user656925 7.02.2012 14:38:15
Я на самом деле предлагал создать его.
Vincent Robert 7.02.2012 15:38:35
как вы предлагаете создать уникальный идентификатор? Как вы используете криптографический алгоритм, чтобы гарантировать, что когда-либо пользователь, который запускает его на своей машине, получает уникальный идентификатор?
Michael 10.12.2013 22:54:53
@Mikhael Wikipedia перечисляет несколько реализаций UUID
Vincent Robert 11.12.2013 10:41:50

Я искал ту же проблему и наткнулся на следующий код.

Как получить клиентский MAC-адрес (Интернет):

Чтобы получить MAC-адрес клиента только так, мы можем полагаться на JavaScript и Active X-контроль Microsoft. Он работает только в 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();
<div id='box'></div>

4
7.10.2019 06:19:42