Alamat MAC di JavaScript

102

Saya tahu bahwa kita bisa mendapatkan alamat MAC pengguna melalui IE (objek ActiveX).

Apakah ada cara untuk mendapatkan alamat MAC pengguna menggunakan JavaScript?

Adhip Gupta
sumber

Jawaban:

57

Saya setuju dengan semua jawaban sebelumnya bahwa itu akan menjadi kerentanan privasi / keamanan jika Anda dapat melakukan ini langsung dari Javascript. Ada dua hal yang dapat saya pikirkan:

  • Menggunakan Java (dengan applet bertanda tangan)
  • Menggunakan Javascript bertanda tangan, yang di FF (dan Mozilla secara umum) mendapatkan hak lebih tinggi daripada JS normal (tetapi cukup rumit untuk disiapkan)
Grey Panther
sumber
1
Saya ingin tahu, dapatkah kita mendapatkan informasi unik seperti alamat mac atau nomor seri atau semacamnya dari pengguna melalui JavaScript? Atau nama PC?
Flamur Beqiraj
55

Jawaban cepat dan sederhana adalah Tidak.

Javascript adalah bahasa tingkat tinggi dan tidak memiliki akses ke informasi semacam ini.

GateKiller
sumber
lalu bagaimana dengan semua hasil pencarian google yang menyediakan kode sampel untuk mendapatkan Alamat MAC
Bulan
14
Saya telah melihat sekilas Google dan semua halaman yang saya baca adalah hanya solusi IE yang mengandalkan penggunaan objek ActiveX. Jika Anda dapat memposting tautan yang menunjukkan sebaliknya ...
GateKiller
25
Saya benar-benar tidak berpikir menjadi "bahasa tingkat tinggi" ada hubungannya dengan alamat MAC, karena bahasa pemrograman sisi server apa pun memungkinkan Anda mendapatkan akses ke tabel ARP, bahkan secara tidak langsung (misalnya melalui subproses). Saya pikir "bahasa sisi klien" akan bekerja lebih baik ...
kirbyfan64sos
6
Tidak ada alasan mengapa bahasa tingkat tinggi tidak memiliki akses ke informasi perangkat keras tingkat rendah. Dalam hal ini hal ini tidak terjadi karena akan menjadi masalah keamanan.
nsn
31

Tidak, Anda tidak bisa mendapatkan alamat MAC dalam JavaScript, terutama karena alamat MAC secara unik mengidentifikasi komputer yang sedang berjalan sehingga akan menjadi kerentanan keamanan.

Sekarang jika yang Anda butuhkan hanyalah pengenal unik, saya sarankan Anda membuatnya sendiri menggunakan beberapa algoritme kriptografi dan menyimpannya dalam cookie.

Jika Anda benar-benar perlu mengetahui alamat MAC komputer DAN Anda mengembangkan aplikasi internal, saya sarankan Anda menggunakan komponen eksternal untuk melakukannya: ActiveX untuk IE, XPCOM untuk Firefox (diinstal sebagai ekstensi).

Vincent Robert
sumber
Apakah Anda mengetahui komponen eksternal untuk Safari?
Tidak. Saya sebenarnya menyarankan untuk membuatnya.
Vincent Robert
bagaimana Anda menyarankan untuk membuat pengenal unik? bagaimana Anda menggunakan algoritme kriptografi untuk menjamin bahwa pengguna yang menjalankannya di mesin mereka mendapatkan id unik?
Michael
2
@Michael Wikipedia mencantumkan beberapa implementasi UUID
Vincent Robert
7

Nggak. Alasan ActiveX bisa melakukannya karena ActiveX adalah aplikasi kecil yang berjalan di mesin klien.

Saya membayangkan akses ke informasi semacam itu melalui JavaScript akan menjadi kerentanan keamanan.

Seibar
sumber
4

Jika ini untuk aplikasi intranet dan semua klien menggunakan DHCP, Anda dapat meminta alamat MAC server DHCP untuk alamat IP tertentu.

Ryan Ahearn
sumber
4

saya sedang mencari masalah yang sama dan menemukan kode berikut.

Cara mendapatkan alamat MAC Klien (Web):

Untuk mendapatkan alamat MAC klien hanya dengan cara kita dapat mengandalkan JavaScript dan kontrol Active X dari Microsoft. Ini hanya berfungsi di IE jika Active X diaktifkan untuk IE. Karena ActiveXObject tidak tersedia dengan Firefox, ini tidak berfungsi dengan firefox dan berfungsi dengan baik di IE.

Skrip ini hanya untuk 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>

Ad Kahn
sumber