天天看点

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中国”

继续阅读