天天看點

Linux 上的 MAC 位址欺騙

網卡生産商在每一張網卡(nic)在出廠時都會在上面刻上一個48位的全球唯一辨別符(guid,例如08:4f:b5:05:56:a0),這串 guid 就是網卡的 mac 位址,用于确定一張網卡的身份。mac 位址的高24位叫 oui(organizationally unique identifier 組織唯一标示符),是為網卡設定 mac 位址的組織的辨別符,這樣一來,不同組織設定的 mac 位址就不會沖突了。(譯注:實際生産中,并不是每個網絡裝置都有不同的mac位址,有時候位址空間不足,生産商會給發往不同地區國家的産品中用相同的位址空間。)

Linux 上的 MAC 位址欺騙

雖然 mac 位址由廠商指定,但使用者可以改變它,這就是傳說中的“mac 位址欺騙”。本文将向大家展示如何在 linux 上玩 mac 位址欺騙。

<a target="_blank"></a>

想要理由?這裡就給幾個比較有技術含量的理由。 一些網絡供應商會通過綁定你家路由器上的 mac 位址來驗證你的身份,這個時候如果你的路由器壞了,你怎麼辦?你可以暫時把你的電腦的 mac 位址改成你家路由器的 mac 位址,讓你的 isp 重新将你連入外網。(譯注:有這種事情麼?)

很多 dhcp 伺服器會依賴 mac 位址來配置設定 ip 位址。如果你想換一個配置設定給你的 ip 位址,你可以改改你的 mac 位址。這樣一來,你不必等着 dhcp 伺服器給你重新分一個 ip 位址,而是馬上就能得到一個新的。

你可以在 linux 運作的時候改變 mac 位址。需要注意的是當 mac 位址轉換的那一會時間,你的網絡會掉線。當電腦重新開機時 mac 位址又會變回原來的。下面介紹幾種方法來改變你的 mac 位址。

$ sudo ip link set dev eth0 down

$ sudo ip link set dev eth0 address 00:00:00:00:00:01

$ sudo ip link set dev eth0 up

macchanger 這個指令可以讓你把 mac 位址改成不同生産廠商的序列号。

在 debian,ubuntu 或 linux mint 下安裝 macchanger:

$ sudo apt-get install macchanger

在 fedora 下安裝 macchanger:

$ sudo yum install macchanger

在 centos 或 rhel 下安裝 macchanger:

$ wget http://ftp.club.cc.cmu.edu/pub/gnu/macchanger/macchanger-1.6.0.tar.gz

$ tar xvfvz macchanger-1.6.0.tar.gz

$ cd macchanger-1.6.0

$ ./configure

$ make

$ sudo make install

下面給出一些 macchanger 的進階使用例子。使用 macchanger 你不必再手動禁用、啟用你的網卡。

僅僅改變 mac 位址:

$ sudo macchanger --mac=00:00:00:00:00:01 eth0

在保證 oui 一緻的情況下為 mac 設定一個随機位址:

$ sudo macchanger -e eth0

為 mac 設定一個完全随機的位址:

$ sudo macchanger -r eth0

擷取所有網卡的 mac 位址,然後隻列出指定的廠商(比如 juniper):

$ macchanger -l | grep -i juniper

Linux 上的 MAC 位址欺騙

顯示一塊網卡原來的 mac 位址和僞裝的 mac 位址:

$ macchanger -s eth0

current mac: 56:95:ac:ee:6e:77 (unknown)

permanent mac: 00:0c:29:97:68:02 (vmware, inc.)

如果你想在系統重新開機後還保持僞裝 mac 位址,你需要編輯配置檔案。比如你想改變 eth0 的 mac 位址,按以下方法搞起:

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0

device=eth0

macaddr=00:00:00:00:00:0

或者你可以建一個開機啟動的腳本放在 /etc/networkmanager/dispatcher.d 目錄下,前提是你使用 network manager 管理你的網絡。這裡假設你已經裝了 macchanger,腳本内容如下:

$ sudo vi /etc/networkmanager/dispatcher.d/000-changemac

#!/bin/bash

case "$2" in

up)

macchanger --mac=00:00:00:00:00:01 "$1"

;;

esac

$ sudo chmod 755 /etc/networkmanager/dispatcher.d/000-changemac

建立一個開機啟動腳本,放在 /etc/network/if-up.d/ 目錄下:

$ sudo vi /etc/network/if-up.d/changemac

#!/bin/sh

if [ "$iface" = eth0 ]; then

ip link set dev "$iface" address 00:00:00:00:00:01

fi

$ sudo chmod 755 /etc/network/if-up.d/changemac

原文釋出時間為:2014-04-02

本文來自雲栖社群合作夥伴“linux中國”

繼續閱讀