首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

MAC 地址全解析:從基礎概念到獲取與修改實戰

     編輯:Java 相關知識

在網路技術討論中,MAC 地址是個常被提及卻又容易混淆的概念。究竟什麼是 MAC 地址?它在現代網路架構中扮演什麼角色?本文將為您詳細拆解 MAC 地址的核心知識,並提供實用的查詢與修改技巧。

什麼是 MAC 地址?

MAC(Media Access Control)地址,中文稱「媒體存取控制位址」,通俗來說就是網路卡的物理位址。它工作於 OSI 模型的資料鏈路層,用於在區域網路中唯一識別每一台裝置。目前主流的 MAC 地址採用 6 位元組(48 位元)格式,早期曾有 2 位元組(16 位元)版本,現已罕見。

MAC 地址的結構

48 位元的 MAC 地址分為兩部分:

  • 前 24 位(OUI,組織唯一識別碼):由製造商向 IEEE 申請,需付費(據傳一個地址塊約 1000 美元)。
  • 後 24 位:由製造商自行分配,確保每張網卡出廠時擁有全球唯一的識別碼。

IP 地址與 MAC 地址的關聯與差異

在典型的區域網路環境(如校園網)中,裝置透過交換機連接至網際網路,管理中心會分配固定 IP 以便管理。但 IP 易變且難以綁定實體裝置,因此引入 MAC 地址作為硬體層面的唯一標識,防止地址衝突、明確責任歸屬(如追蹤網路犯罪)。

特性IP 地址MAC 地址
層級網路層(第 3 層)資料鏈路層(第 2 層)
長度IPv4 為 32 位元48 位元
可變性可手動配置或 DHCP 動態獲取出廠燒錄,理論上不可更改
記憶難度點分十進制,易記十六進制,難記
對應關係區域網路中一一對應(透過 ARP 協定)

如何查看自己的 MAC 地址

根據作業系統版本,常用方法有二:

  • Windows 9x:執行 winipcfg 命令。
  • Windows 2000 / XP / 後續版本:在命令提示字元執行 ipconfig /all,在「實體位址」欄位即可看到。

若已配置 IP,亦可用 nbtstat -A 本機IP(僅限 2000/XP 以上)查詢。

如何獲取同區域網路內他人的 MAC 地址

  1. nbtstat 命令:nbtstat -A 目標IP(2000/XP 適用),除 MAC 外還能獲取其他 NetBIOS 資訊。
  2. Ping + ARP 法:先 ping 目標IP 或主機名,再執行 arp -a 查看 ARP 快取表,即可找到對應 MAC。
提醒:僅限學習與合法網管用途,切勿用於非法入侵或偽裝身分。

如何修改 MAC 地址(MAC Spoofing)

MAC 地址儲存於網卡 EEPROM 中,廠商通常提供修改工具。即使無專用工具,亦可透過作業系統層面間接修改:網卡發送封包時的來源 MAC 實際由應用程式提供,Windows 中則從登錄檔讀取。

Windows 9x 修改登錄檔

開啟 regedit,定位至:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\Class\Net\

在 0000、0001、0002 等子鍵中尋找對應網卡的 DriverDesc,新增字串值 NetworkAddress,值為 12 位十六進制(如 000102030405),重啟生效。

Windows 2000 / XP 修改登錄檔

路徑為:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E970-E325-11CE-BFC1-08002BE10318}

同樣在 0000、0001、0002 中找到目標網卡,新增 NetworkAddress 字串值,重啟電腦。

Linux 系統修改

# 1. 關閉網卡介面
ifconfig eth0 down

# 2. 修改 MAC
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE

# 3. 啟用網卡
ifconfig eth0 up

此外,第三方工具如 Mac2001 亦提供圖形化修改介面。

防禦 MAC 地址偽造與盜用

既然 IP 與 MAC 均可修改,網管如何防禦?核心策略是交換機端口綁定:

  • 靜態 MAC 表項:將交換機端口與特定 MAC 綁定,一端口僅允許一主機,防止 MAC 盜用。
  • 三層綁定(Port-IP-MAC):在三層交換機上同時綁定端口、IP、MAC,更有效阻擋 IP 盜用。
  • 進階手段還包括 VLAN 劃分、802.1X 用戶認證等,安全性更高但配置較複雜。

附錄:Java 程式碼獲取本機 MAC 地址

import java.io.*;

public class GetMAC {
    public static void main(String[] args) {
        try {
            Process process = Runtime.getRuntime().exec("ipconfig /all");
            InputStreamReader ir = new InputStreamReader(process.getInputStream());
            LineNumberReader input = new LineNumberReader(ir);
            String line;
            while ((line = input.readLine()) != null) {
                if (line.indexOf("Physical Address") > 0) {
                    String macAddr = line.substring(line.indexOf("-") - 2);
                    System.out.println("MAC address = [" + macAddr + "]");
                }
            }
        } catch (IOException e) {
            System.err.println("IOException " + e.getMessage());
        }
    }
}

本文系統梳理了 MAC 地址的原理、查詢、修改與防禦,希望能幫助您更透徹地理解網路底層識別機制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved