MAC地址

媒體訪問控制地址

MAC地址(Media Access Control Address),直譯為媒體訪問控制地址,也稱為區域網地址(LAN Address),乙太網地址(Ethernet Address)或物理地址(Physical Address),它是一個用來確認網上設備位置的地址。在OSI模型中,第三層網路層負責IP地址,第二層數據鏈接層則負責MAC地址。MAC地址用於在網路中唯一標示一個網卡,一台設備若有一或多個網卡,則每個網卡都需要並會有一個唯一的MAC地址。

簡介


MAC地址也叫物理地址、硬體地址,由網路設備製造商生產時燒錄在網卡(Network lnterface Card)的EPROM(一種快閃記憶體晶元,通常可以通過程序擦寫)。IP地址與MAC地址在計算機里都是以二進位表示的,IP地址是32位的,而MAC地址則是48位的。
MAC地址的長度為48位(6個位元組),通常表示為12個16進位數,如:00-16-EA-AE-3C-40就是一個MAC地址,其中前3個位元組,16進位數00-16-EA代表網路硬體製造商的編號,它由IEEE(電氣與電子工程師協會)分配,而後3個位元組,16進位數AE-3C-40代表該製造商所製造的某個網路產品(如網卡)的系列號。只要不更改自己的MAC地址,MAC地址在世界是唯一的。形象地說,MAC地址就如同身份證上的身份證號碼,具有唯一性。

結構


網路中每台設備都有一個唯一的網路標識,這個地址叫MAC地址或網卡地址,由網路設備製造商生產時寫在硬體內部。MAC地址則是48位的(6個位元組),通常表示為12個16進位數,每2個16進位數之間用冒號隔開,如08:00:20:0A:8C:6D就是一個MAC地址。具體如下圖所示,其前3位元組表示OUI(Organizationally Unique Identifier),是IEEE的註冊管理機構給不同廠家分配的代碼,區分不同的廠家。后3位元組由廠家自行分配。
MAC地址最高位元組(MSB)的低第二位(LSb)表示這個MAC地址是全局的還是本地的,即U/L(Universal/Local)位,如果為0,表示是全局地址。所有的OUI這一位都是0。
MAC地址最高位元組(MSB)的低第一位(LSb),表示這個MAC地址是單播還是多播。0表示單播。 

工作過程


網路上的數據包從初始點開始,經過一個個中間節點最終到達目標節點,數據包是如何從初始節點開始識別一個個中間節點最終找到目標節點的呢? 實際上初始節點是根據目標節點的地址,將目標節點的IP地址映射到中間節點的MAC地址,找到第一個中間節點。從第一個中間節點出發,根據目標節點的IP地址映射到第二個中間節點的MAC地址,從而找到第二個中間節點……,以此類推,直到當找到最後一個中間節點后,從最後一個中間節點出發,根據目標節點的地址映射到目的節點的MAC地址,從而將數據包傳送給目標主機。所以數據包的傳送過程就是:不斷地將目標節點的地址映射到一個個中間節點的MAC地址,再從一個個中間節點出發,直到找到最終的目標節點。
數據包傳送的關鍵是將目標節點的IP地址映射到中間節點的MAC地址。IP地址與MAC地址的映射要通過ARP地址解析協議來完成,它可將網路中的IP地址映射到主機的MAC地址,如交換機可以根據網路中的IP地址來找到本地主機的MAC地址。具體過程是:當交換機接收到來自網上一個數據包時,會根據該數據包的目標IP地址,查看交換機內部是否有跟該IP地址對應的MAC地址,如果有上次保留下來的對應的MAC地址,就會將該數據包 轉發到對應MAC地址的主機上去。如果在交換機內部沒有與目標)地址對應的MAC地址,則交換機會根據ARP協議將目標IP地址按照“表”中的對應關係映射成MAC地址,數據包就被轉送到對應的MAC地址的主機上。

解釋


MAC(Media Access Control,介質訪問控制)地址,也叫硬體地址,長度是48比特(6位元組),由16進位的數字組成,分為前24位和后24位:
● 前24位叫做組織唯一標誌符(Organizationally Unique Identifier,即OUI),是由IEEE的註冊管理機構給不同廠家分配的代碼,區分了不同的廠家。
● 后24位是由廠家自己分配的,稱為擴展標識符。同一個廠家生產的網卡中MAC地址后24位是不同的。
MAC地址對應於OSI參考模型的第二層數據鏈路層,工作在數據鏈路層的交換機維護著計算機MAC地址和自身埠的資料庫,交換機根據收到的數據幀中的“目的MAC地址”欄位來轉發數據幀。
其中第1位元組的第8Bit(如圖中00-50-BA-...對應的0000000-01010000-10111010-...,加粗字體的Bit)標識這個地址是組播地址還是單播地址。這是由乙太網的傳輸協議高位元組先傳,但每一位元組內低位先傳的特性所決定的,見IEEE 802.3 3.2.3 Address fields: “The first bit (LSB) shall be used in the Destination Address field as an address type designation bit to identify the Destination Address either as an individual or as a group address. If this bit is 0, it shall indicate that the address field contains an individual address. If this bit is 1, it shall indicate that the address field contains a group address that identifies none, one or more, or all of the stations connected to the LAN. In the Source Address field, the first bit is reserved and set to 0.”。事實上這傳輸的順序為00000000000101001011101...“The first bit (LSB)”即是前言的第8Bit。
網卡的物理地址通常是由網卡生產廠家插入網卡的EPROM(一種快閃記憶體晶元,通常可以通過程序擦寫),它存儲的是傳輸數據時真正賴以標識發出數據的電腦和接收數據的主機的地址。
也就是說,在網路底層的物理傳輸過程中,是通過物理地址來識別主機的,它一定是全球唯一的。比如,著名的乙太網卡,其物理地址是48bit(比特位)的整數,如:44-45-53-54-00-00,以機器可讀的方式存入主機介面中。乙太網地址管理機構(除了管這個外還管別的)(IEEE)(IEEE:電氣和電子工程師協會)將乙太網地址,也就是48比特的不同組合,分為若干獨立的連續地址組,生產乙太網網卡的廠家就購買其中一組,具體生產時,逐個將唯一地址賦予乙太網卡。
形象地說,MAC地址就如同身份證上的身份證號碼,具有全球唯一性。

作用


談起MAC地址,不得不說一下IP地址。IP地址工作在OSI參考模型的第三層網路層。兩者之間分工明確,默契合作,完成通信過程。IP地址專註於網路層,將數據包從一個網路轉發到另外一個網路;而MAC地址專註於數據鏈路層,將一個數據幀從一個節點傳送到相同鏈路的另一個節點。
在一個穩定的網路中,IP地址和MAC地址是成對出現的。如果一台計算機要和網路中另一台計算機通信,那麼要配置這兩台計算機的IP地址,MAC地址是網卡出廠時設定的,這樣配置的IP地址就和MAC地址形成了一種對應關係。在數據通信時,IP地址負責表示計算機的網路層地址,網路層設備(如路由器)根據IP地址來進行操作;MAC地址負責表示計算機的數據鏈路層地址,數據鏈路層設備(如交換機)根據MAC地址來進行操作。IP和MAC地址這種映射關係由ARP(Address Resolution Protocol,地址解析協議)協議完成。
IP地址就如同一個職位,而MAC地址則好像是去應聘這個職位的人才,職位既可以讓甲坐,也可以讓乙坐,同樣的道理一個結點的IP地址對於網卡是不做要求,基本上什麼樣的廠家都可以用,也就是說IP地址與MAC地址並不存在著綁定關係。本身有的計算機流動性就比較強,正如同人才可以給不同的單位幹活的道理一樣的,人才的流動性是比較強的。職位和人才的對應關係就有點像是IP地址與MAC地址的對應關係。比如,如果一個網卡壞了,可以被更換,而無須取得一個新的IP地址。如果一個IP主機從一個網路移到另一個網路,可以給它一個新的IP地址,而無須換一個新的網卡。當然MAC地址除了僅僅只有這個功能還是不夠的,就拿人類社會與網路進行類比,通過類比,我們就可以發現其中的類似之處,更好地理解MAC地址的作用。無論是區域網,還是廣域網中的計算機之間的通信,最終都表現為將數據包從某種形式的鏈路上的初始結點出發,從一個結點傳遞到另一個結點,最終傳送到目的結點。數據包在這些節點之間的移動都是由ARP負責將IP地址映射到MAC地址上來完成的。其實人類社會和網路也是類似的,試想在人際關係網路中,甲要捎個口信給丁,就會通過乙和丙中轉一下,最後由丙 轉告給丁。在網路中,這個口信就好比是一個網路中的一個數據包。數據包在傳送過程中會不斷詢問相鄰節點的MAC地址,這個過程就好比是人類社會的口信傳送過程。相信通過這兩個例子,我們就可以進一步理解MAC地址的作用。
與IP地址區別
IP地址和MAC地址相同點是它們的唯一,不同的特點主要有:
● ● 對於網路上的某一設備,如一台計算機或一台路由器,其IP地址是基於網路拓撲設計出的,同一台設備或計算機上,改動IP地址是很容易的(但必須唯一),而MAC則是生產廠商燒錄好的,一般不能改動。我們可以根據需要給一台主機指定任意的IP地址,如我們可以給區域網上的某台計算機分配IP地址為192.168.0.112 ,也可以將它改成192.168.0.200。而任一網路設備(如網卡,路由器)一旦生產出來以後,其MAC地址不可由本地連接內的配置進行修改。如果一個計算機的網卡壞了,在更換網卡之後,該計算機的MAC地址就變了。
● ● 長度不同。IP地址為32位,MAC地址為48位。
● ● 分配依據不同。IP地址的分配是基於網路拓撲,MAC地址的分配是基於製造商。
● ● 定址協議層不同。IP地址應用於OSI第三層,即網路層,而MAC地址應用在OSI第二層,即數據鏈路層。 數據鏈路層協議可以使數據從一個節點傳遞到相同鏈路的另一個節點上(通過MAC地址),而網路層協議使數據可以從一個網路傳遞到另一個網路上(ARP根據目的IP地址,找到中間節點的MAC地址,通過中間節點傳送,從而最終到達目的網路)。

獲取方法


在Windows 2000/XP/Vista/7中
單擊開始,點擊運行,輸入cmd,進入后輸入ipconfig /all 即可。(或者輸入ipconfig -all)(如圖1所示)Physical Address. . . . . . . . . : 00-23-5A-15-99-42
單擊開始,點擊運行,輸入cmd,進入后輸入getmac即可。
另外,還可以通過查看本地連接獲取MAC地址:依次單擊“本地連接”→“狀態”——“常規”→“詳細信息”。即可看到MAC地址(實際地址),如圖2所示。
linux/unix
在命令行輸入ifconfig即可看到MAC地址,如圖3所示:

修改方法


其實更改網卡MAC地址的功能不論98、Win7、2000還是XP,都已經提供了,只是平時大家都沒有注意到而已。下面我就說說怎麼更改。

win8

1、右擊桌面右下角的網路連接圖標,點擊“打開網路和共享中心”。
2、點擊“更改適配器設置”,選擇本地連接或乙太網,右擊,選擇屬性。
3、點擊“網路”下的配置,配置裡面的“高級”。
4、找到“網路地址”,填寫mac地址(物理地址/物理ip)。

Win7

①點擊桌面右下角電源與音量之間的網路連接按鈕,在彈出的對話框最下端有“打開網路和共享中心”。
②點擊“更改適配器設置”選取要更改的網路連接,點擊屬性。
③在執行②後會彈出連接屬性對話框,點擊“配置”。
④點擊“高級”,在屬性中選擇網路地址(network address),點擊左面的“值”,輸入你所需的MAC地址後點擊確定即可。
注意:在修改無線網卡地址的時候,Win7對地址做出一個限制。MAC出廠地址12個數字可以是0-9,A-F任何一個數字,但是在Win7軟體修改地址的時候,MAC地址的第二位必須是2,6,A,或者E。
xy:xx:xx:xx:xx:xx
x=0-9,A-F
y=2,6,A或者E

Win2000

好了,先來看看WIN2000。在桌面上網上鄰居圖標上點右鍵,選"屬性",在出來的"網路和撥號連接"窗口中一般有兩個圖標,一個是"新建連接"圖標,一個是"我的連接"圖標。如果你的機器上有兩個網卡的話,那就有三個圖標了。如果你只有一個網卡,那就在"我的連接"圖標上點右鍵,選"屬性",會出來一個"我的連接 屬性"的窗口。在圖口上部有一個"連接時使用:"的標識,下面就是你機器上的網卡型號了。在下面有一個"配置"按鈕,點擊該按鈕后就進入了網卡的屬性對話框了,這個對話框中有五個屬性頁,點擊第二項"高級"頁,在"屬性"標識下有兩項:一個是"Link Speed/Duplex Mode",這是設置網卡工作速率的,我們需要改的是下面一個"Network Address",點擊該項,在對話框右邊的"值"標識下有兩個單選項,默認的是"不存在" ,我們只要選中上面一個單選項,然後在右邊的框中輸入你想改的網卡MAC地址,點"確定",等待一會兒,網卡地址就改好了,甚至不用停用網卡!
另外,你也可以在"設置管理器"中,打開網卡的屬性頁來修改,效果一樣。WINXP的修改方法跟WIN2000一樣。
如果你想把網卡的MAC地址恢復原樣,只要再次把"Network Address"項右邊的單選項選擇為下面一個"沒有顯示"再重新啟動即可。在WIN2000、XP、WIN7下面是選擇"不存在",當然也不用重新啟動了。
● ● 1.修改註冊表
幾乎所有的網卡驅動程序都可以被NdisReadNetworkAddress參數調用,以便從註冊表中讀取一個用戶指定的MAC地址。當驅動程序確定這個MAC地址是有效的,就會將這個MAC地址編程入其硬體寄存器中,而忽略網卡固有的MAC地址。我們通過手工修改Windows的註冊表就可以達到目的。
在Winodws 98下運行Windows的註冊表編輯器,展開“HKEY_LOCAL_MACHINE\System\Current ControlSet\Services\Class\Net”,會看到類似“0000”、“0001”、“0002”的子鍵。從“0000”子鍵開始點擊,依次查找子鍵下的“DriverDesc”鍵的內容,直到找到與我們查找的目標完全相同的網卡註冊表信息為止。
當找到正確的網卡后,點擊下拉式菜單“編輯/新建/字元串”,串的名稱為“Networkaddress”,在新建的“Networkaddress”串名稱上雙擊滑鼠就可以輸入數值了。輸入你想指定的新的MAC地址值。新的MAC地址應該是一個12位的十六進位數字或字母,其間沒有“-”,類似12個零的這樣的數值(注意,在Windows 98和Windows 2000/XP中具體鍵值的位置稍有不同,大家可通過查找功能來尋找)。
在“NetworkAddress”下繼續添加一個名為“ParamDesc”的字串值,它將作為“NetworkAddress”項的描述,數值可以取為“MAC Address”。再把它的內容修改為你想設定的內容。如圖所示。
這樣,我們就成功地修改了網卡的MAC地址,重新啟動計算機即可。
● ● 修改網卡屬性
大部分的網卡都可以通過在控制面板中修改網卡屬性來更改其MAC地址,筆者的3COM 3C905B-TX和RTL8139晶元的網卡都可以這樣輕鬆修改。
在“設備管理器中”,右鍵點擊需要修改MAC地址的網卡圖標,並選擇“屬性/高級”選項卡。在“屬性”區,就可以看到一個稱作“Network Address”或其他相類似名字的的項目,點擊它,在右側“值”的下方,輸入要指定的MAC地址值。要連續輸入12個十六進位數字或字母,不要在其間輸入“-”。重新啟動系統後設置就會生效了。
如果是Windows 2000/XP的用戶,則可以使用免費MAC地址修改軟體SMAC。運行SMAC后,窗口中的列表框列出計算機上正處於工作狀態的網卡。選定要修改的網卡后,在列表框下方的六個輸入框中輸入新的MAC地址后,點擊右側的“Update MAC(修改MAC地址)”,即可完成MAC地址的修改。

應用


平日身份證的作用並不是很大,但是到了有的關鍵時刻,身份證就是用來證明你的身份的。比如你要去銀行提取現金,這時就要用到身份證。那麼MAC地址與IP地址綁定就如同我們在日常生活中的本人攜帶自己的身份證去做重要事情一樣的道理。有的時候,我們為了防止IP地址被盜用,就通過簡單的交換機埠綁定(埠的MAC表使用靜態表項),可以在每個交換機埠只連接一台主機的情況下防止修改MAC地址的盜用,如果是三層設備還可以提供:交換機埠/IP/MAC 三者的綁定,防止修改MAC的IP盜用。一般綁定MAC地址都是在交換機和路由器上配置的,是網管人員才能接觸到的,對於一般電腦用戶來說只要了解了綁定的作用就行了。比如你在校園網中把自己的筆記本電腦換到另外一個宿舍就無法上網了,這個就是因為MAC地址與IP地址(埠)綁定引起的。

攻擊方法


ARP欺騙技術已經很成熟了,這裡也不再闡述。此次重點講解如何不用ARP欺騙進行嗅探以及會話劫持的技術原理,實際的攻擊方法是進行MAC欺騙的原理,亦即根據附近共享的資源和自帶的資源裡帶有BK,然後取得一些客戶資料,算是商業間諜吧,只是這個更隱蔽具有很高的安全性。平常的ID和address都是可以不加密。
原理:在開始之前我們先簡單了解一下交換機轉發過程:交換機的一個埠收到一個數據幀時,首先檢查該數據幀的目的MAC地址在MAC地址表(CAM)對應的埠,如果目的埠與源埠不為同一個埠,則把幀從目的埠轉發出去,同時更新MAC地址表中源埠與源MAC的對應關係;如果目的埠與源埠相同,則丟棄該幀。

格式


MAC地址共48位(6個位元組),以十六進位表示。前24位由IEEE決定如何分配,后24位由實際生產該網上設備的廠商自行指定。
ff:ff:ff:ff:ff:ff則作為廣播地址。
01:xx:xx:xx:xx:xx是多播地址,01:00:5e:xx:xx:xx是IPv4多播地址。