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.