在 JavaScript 中獲取 Mac 地址
為了將資料從一臺計算機傳送到另一臺計算機,我們需要一些地址。在計算機網路中,引入了各種地址,每個地址都在不同的層上工作。
例如,媒體訪問控制地址是在資料鏈路層工作的實體地址。本文將討論 DLL 中的定址,即 MAC 地址,並演示如何使用 JavaScript 獲取使用者的 MAC 地址。
MAC 地址
MAC(媒體訪問控制)是分配給網路介面控制器的 48 位唯一識別符號。它是與每個網路裝置相關聯的實體地址。
資料鏈路層使用 MAC 地址將資料包從源路由到其目的地。它在 IEEE 802 標準中分為兩個子層:
- 邏輯鏈路控制 (LLC) 子層
- 媒體訪問控制 (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 地址:
在 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 地址顯示在螢幕上。
你可以在此連結中找到此問題的完整程式碼。我們還在下面提供了螢幕截圖。
由於明顯的原因,此螢幕截圖上的輸出已被模糊。