在 JavaScript 中獲取 Mac 地址

Tahseen Tauseef 2023年1月30日
  1. MAC 地址
  2. MAC 地址格式
  3. 在 JavaScript 中使用 ActiveX 物件獲取 MAC 地址
在 JavaScript 中獲取 Mac 地址

為了將資料從一臺計算機傳送到另一臺計算機,我們需要一些地址。在計算機網路中,引入了各種地址,每個地址都在不同的層上工作。

例如,媒體訪問控制地址是在資料鏈路層工作的實體地址。本文將討論 DLL 中的定址,即 MAC 地址,並演示如何使用 JavaScript 獲取使用者的 MAC 地址。

MAC 地址

MAC(媒體訪問控制)是分配給網路介面控制器的 48 位唯一識別符號。它是與每個網路裝置相關聯的實體地址。

資料鏈路層使用 MAC 地址將資料包從源路由到其目的地。它在 IEEE 802 標準中分為兩個子層:

  1. 邏輯鏈路控制 (LLC) 子層
  2. 媒體訪問控制 (MAC) 子層

由於存在數以百萬計的網路裝置,我們需要唯一地識別每一個裝置,因此 MAC 地址在全球範圍內都是唯一的。

MAC 地址格式

MAC 地址是 12 位十六進位制數(6 位元組二進位制數),通常以冒號-十六進位制表示法書寫。OUI(組織唯一識別符號*)是 MAC 地址的前 6 位數字(例如,00:40:96)。

IEEE 序號產生器構委員會將這些 MAC 字首分配給其註冊供應商。以下是一些知名廠商的 OUI:

CC:46:D6 - Cisco
3C:5A:B4 - Google, Inc.
3C:D9:2B - Hewlett Packard
00:9A:CD - HUAWEI TECHNOLOGIES CO.,LTD

製造商將最右邊的六位數字分配給網路介面控制器。

如上所述,MAC 地址是用冒號-十六進位制格式編寫的,但這只是一種轉換,並不是必需的。以下任何一種格式都可用於表示 MAC 地址:

MAC 地址格式

在 JavaScript 中使用 ActiveX 物件獲取 MAC 地址

我們只能使用 Microsoft 的 ActiveX 物件控制元件在 JavaScript 中獲取使用者的 MAC 地址。它只能在 Internet Explorer 上工作,因為 ActiveX 物件在任何其他瀏覽器中都不可用。

要啟用 ActiveX 物件,我們將轉到工具並選擇 Internet 選項。然後在安全標籤頁上,我們將單擊自定義級別。

我們將繼續下去,直到我們看到 Initialize 和指令碼 ActiveX 控制元件未標記為安全。我們將啟用它,然後單擊確定。

<script type="text/javascript">
    var macAddress = "";
    var computerName = "";
    var wmi = GetObject("winmgmts:{impersonationLevel=impersonate}");
    e = new Enumerator(wmi.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True"));
    for(; !e.atEnd(); e.moveNext()) {
        var s = e.item();
        macAddress = s.MACAddress;
        computerName = s.DNSHostName;
    }
</script>

現在,我們進入編碼部分。我們可以將上面的程式碼新增到 HTML 頭部或主體的任何位置,但如果我們選擇將其放在主體中,請將其放在下面的程式碼上方。

在這裡,我們將訪問 Win32_NetworkAdapterConfiguration 以讀取與網路相關的詳細資訊,例如 MAC 地址、IP 地址和計算機名稱。然後,我們可以使用文字框來顯示該資訊或我們喜歡的任何內容。

<script type="text/javascript">
<input type="text" id="txtMACAdress" />
<input type="text" id="txtComputerName" />

<script type="text/javascript">
    document.getElementById("txtMACAdress").value = unescape(macAddress);
    document.getElementById("txtComputerName").value = unescape(computerName);
</script>

我們必須確保將宣告放在此程式碼上方以正確顯示值。現在,客戶端可以看到他們的 MAC 地址顯示在螢幕上。

你可以在此連結中找到此問題的完整程式碼。我們還在下面提供了螢幕截圖。

使用 ActiveX 物件獲取 MAC 地址

由於明顯的原因,此螢幕截圖上的輸出已被模糊。