JavaScript의 MAC 주소


102

IE (ActiveX 개체)를 통해 사용자의 MAC 주소를 얻을 수 있다는 것을 알고 있습니다.

JavaScript를 사용하여 사용자의 MAC 주소를 얻는 방법이 있습니까?

답변:


57

Javascript에서 직접 수행 할 수 있다면 개인 정보 / 보안 취약점이 될 것이라는 이전의 모든 답변에 동의합니다. 내가 생각할 수있는 두 가지가 있습니다.

  • Java 사용 (서명 된 애플릿 사용)
  • FF (및 일반적으로 Mozilla)에서 일반 JS보다 더 높은 권한을 갖는 서명 된 Javascript 사용 (하지만 설정하는 것은 상당히 복잡합니다)

1
궁금한 점이 있었는데, 자바 스크립트를 통해 사용자로부터 mac 주소 나 일련 번호 또는 이와 유사한 고유 정보를 얻을 수 있습니까? 아니면 PC 이름?
— Flamur Beqiraj

55

빠르고 간단한 대답은 아니오입니다.

Javascript는 상당히 높은 수준의 언어이며 이러한 종류의 정보에 액세스 할 수 없습니다.


그런 다음 MAC 주소를 얻기 위해 샘플 코드를 제공하는 모든 Google 검색 결과는 어떻
— Moon

14
나는 구글을 둘러 보았고 내가 읽은 모든 페이지는 ActiveX 객체 사용에 의존하는 IE 전용 솔루션이었습니다. 당신이 그렇지 않으면 보여주는 링크를 게시 할 수 있다면 ...
— GateKiller

25
서버 측 프로그래밍 언어를 사용하면 간접적으로 (예 : 하위 프로세스를 통해) ARP 테이블에 액세스 할 수 있기 때문에 "고수준 언어"가 MAC 주소와 관련이 있다고 생각하지 않습니다. 나는 "클라이언트 측 언어가"잘 작동 할 것이라는 점을 생각한다 ...
— kirbyfan64sos

6
고수준 언어가 저수준 하드웨어 정보에 액세스 할 수없는 이유가 없습니다. 이 경우 보안 문제이기 때문에 발생하지 않습니다.
— nsn

31

아니요. JavaScript에서는 MAC 주소를 얻을 수 없습니다. 주로 MAC 주소가 실행중인 컴퓨터를 고유하게 식별하므로 보안 취약점이되기 때문입니다.

이제 필요한 모든 것이 고유 한 식별자 인 경우 암호화 알고리즘을 사용하여 직접 만들고 쿠키에 저장하는 것이 좋습니다.

컴퓨터의 MAC 주소를 정말로 알아야하고 내부 애플리케이션 용으로 개발중인 경우 IE 용 ActiveX, Firefox 용 XPCOM (확장으로 설치됨)과 같은 외부 구성 요소를 사용하는 것이 좋습니다.


Safari 용 외부 구성 요소를 알고 있습니까?

아뇨. 실제로 하나를 만들 것을 제안했습니다.
— Vincent Robert

고유 식별자를 만드는 방법은 무엇입니까? 컴퓨터에서 실행하는 사용자가 고유 한 ID를 얻도록 보장하기 위해 암호화 알고리즘을 어떻게 사용합니까?
— Michael

2
@Michael 위키 백과는 몇 가지 나열 UUID 구현
— 빈센트 로버트에게

7

아니. ActiveX가 할 수있는 이유는 ActiveX가 클라이언트의 컴퓨터에서 실행되는 작은 응용 프로그램이기 때문입니다.

JavaScript를 통해 이러한 정보에 액세스하는 것이 보안 취약점이라고 생각합니다.


4

인트라넷 응용 프로그램 용이고 모든 클라이언트가 DHCP를 사용하는 경우 DHCP 서버에서 주어진 IP 주소에 대한 MAC 주소를 쿼리 할 수 ​​있습니다.


4

나는 같은 문제를 찾고 있었고 다음 코드를 우연히 발견했습니다.

클라이언트 MAC 주소 (웹)를 얻는 방법 :

클라이언트 MAC 주소를 얻으려면 Microsoft의 JavaScript 및 Active X 제어에 의존 할 수 있습니다. Active X가 IE에 대해 활성화 된 경우에만 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>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.