Altere o endereço de hardware com o MAC Changer

O macchanger é um programa utilitário próprio para exibir e manipular endereços físicos MAC das interfaces de rede presentes no seu sistema Linux.
Se você costuma realizar operações no endereço de hardware MAC de seu sistema usando o ifconfig ou editando o arquivo de configuração /etc/network/interfaces, precisa conhecer este pequeno programa — que é livre e licenciado sob a GPL 3.0v.
Com este aplicativo é mais fácil fazer alterações consistentes nas interfaces de rede no Linux.
Network lights

Como instalar e usar o MACChanger

Este post está sendo escrito e testado em uma máquina com o Trisquel GNU/Linux 7.0 instalado — uma distro baseada no Debian, tal como o Ubuntu, o Linux Mint etc.
Aqui, vou usar o apt-get para baixar e instalar o aplicativo:


sudo apt-get install macchanger

Para verificar o endereço físico da máquina, use a opção --show acompanhada da interface de rede que você deseja verificar:


macchanger --show eth0

Como você pode ver (abaixo) o valor atual (current) é o mesmo do permanente, gravado no firmware ou na ROM do dispositivo de acesso à rede:

Current MAC:   6c:ae:8b:04:da:48 (IBM Corporation)
Permanent MAC: 6c:ae:8b:04:da:48 (IBM Corporation)

Não será possível alterar o valor permanente, mas apenas o valor “atual” ou current.
Como as outras máquinas da rede só vão enxergar este valor, alterá-lo será o suficiente para nós.

Como alterar o endereço físico da interface de rede como MACChanger

Os primeiros bits do endereço MAC da sua interface de rede, são os que correspondem ao fabricante. No caso do meu exemplo, IBM Corporation.
Ao usar a opção --list, é possível ver a lista de bytes relacionados a fabricantes. Use o comando grep para filtrar apenas os que dizem respeito ao da sua placa:

macchanger --list | grep 6c:ae:8b

15416 - 6c:ae:8b - IBM Corporation

Uma outra forma de listar fabricantes é indicar parte de seu nome, assim:


macchanger --list=Lenovo

Este comando é sensível à caixa das letras.

Misc MACs:
Num    MAC        Vendor
---    ---        ------
1564 - 00:06:1b - Notebook Development Lab.  Lenovo Japan Ltd.
4835 - 00:12:fe - Lenovo Mobile Communication Technology Ltd.
10763 - 00:59:07 - LenovoEMC Products USA, LLC
13320 - 14:9f:e8 - Lenovo Mobile Communication Technology Ltd.
14691 - 50:3c:c4 - Lenovo Mobile Communication Technology Ltd.
15382 - 6c:5f:1c - Lenovo Mobile Communication Technology Ltd.
15965 - 80:cf:41 - Lenovo Mobile Communication Technology Ltd.
16548 - 98:ff:d0 - Lenovo Mobile Communication Technology Ltd.
17722 - c8:dd:c9 - Lenovo Mobile Communication Technology Ltd.
17747 - cc:07:e4 - Lenovo Mobile Communication Technology Ltd.
17965 - d4:22:3f - Lenovo Mobile Communication Technology Ltd.
18103 - d8:71:57 - Lenovo Mobile Communication Technology Ltd.
18569 - ec:89:f5 - Lenovo Mobile Communication Technology Ltd.

Wireless MACs:
Num    MAC        Vendor
---    ---        ------

Ou seja, quando os primeiros bytes de um endereço MAC forem “6c:ae:8b”, sabemos que o fabricante da interface de rede é “IBM Corporation”.
Isto significa que é possível a um administrador de redes ter políticas específicas para barrar, filtrar, monitorar, permitir acessos de determinados fabricantes de hardware?
Com certeza, sim.
Relação de fabricantes e vendedores de interfaces de rede
Para alterar aleatoriamente a identificação do fabricante e manter o restante do endereço inalterado, use a opção --another:


sudo macchanger --another eth0

Note que apenas os primeiros bytes do endereço (referentes ao fabricante) são alterados:

Current MAC:   6c:ae:8b:04:da:48 (IBM Corporation)
Permanent MAC: 6c:ae:8b:04:da:48 (IBM Corporation)
New MAC:       00:02:64:04:da:48 (AudioRamp.com)

A escolha do fabricante é aleatória. Mas a opção --another faz uma escolha fiel ao “tipo” do fabricante.
Se quiser alterar apenas a última parte do endereço, mantendo a identificação do fabricante, use --ending:


sudo macchanger --ending eth0


Current MAC:   00:02:64:04:da:48 (AudioRamp.com)
Permanent MAC: 6c:ae:8b:04:da:48 (IBM Corporation)
New MAC:       00:02:64:c1:06:6f (AudioRamp.com)

Para escolher aleatoriamente outra identificação de fabricante, de outro “tipo”, use a opção -A — o “A” maiúsculo indica uma escolha aleatória “mais forte”, se isto ajuda a memorizar.


sudo macchanger -A eth0

Current MAC:   00:02:64:c1:06:6f (AudioRamp.com)
Permanent MAC: 6c:ae:8b:04:da:48 (IBM Corporation)
New MAC:       00:0a:1d:c1:06:6f (Optical Communications Products Inc.)

Se quiser mudar completamente o endereço, use a opção --random.
Você pode combinar esta opção com --bia (burned-in address) para fazê-lo parecer com um endereço físico gravado no hardware.
Quando esta opção não é usada, o novo MAC mantém o bit local-administered intacto.
Para voltar atrás nas alterações e restaurar o endereço padrão, use --permanent.


sudo macchanger --permanent eth0


Current MAC:   00:0e:63:c1:06:6f (Lemke Diagnostics GmbH)
Permanent MAC: 6c:ae:8b:04:da:48 (IBM Corporation)
New MAC:       6c:ae:8b:04:da:48 (IBM Corporation)

Como fornecer seus próprios valores para compor o novo endereço MAC

Com a opção --mac, é possível fornecer livremente os novos valores para a sua interface de rede.
A sintaxe é essa: --mac=XX:XX:XX:XX:XX:XX.
Veja um exemplo:


sudo macchanger --mac=ec:3f:05:04:da:48 eth0


Current MAC:   ec:3f:05:04:da:48 (Institute 706, The Second Academy China Aerospace Science & Industry Corp)
Permanent MAC: 6c:ae:8b:04:da:48 (IBM Corporation)
New MAC:       00:00:0c:04:da:48 (CISCO SYSTEMS, INC.)

Se você obtiver alguma mensagem de erro, leia o post Como alterar permanentemente o endereço de hardware MAC.
Use o conhecimento com responsabilidade! 🙂

Como alterar permanentemente o endereço de hardware MAC

O endereço de hardware MAC é um identificador único, atribuído a interfaces de redes, para permitir a comunicação no segmento físico.
Sigla de Media Access Control, o endereço é usado na maioria das redes que seguem o padrão tecnológico IEEE 802, o que inclui a rede Ethernet e a WiFI.
network ethernet cable
O MAC address é geralmente atribuído pelo fabricante da interface controladora de rede ou NIC (Network Interface Controller) e armazenado em algum lugar do hardware — tal como na memória de apenas leitura (ROM) ou em algum mecanismo do firmware.

Quando atribuído pelo fabricante, o endereço MAC costuma vir com sua identificação codificada e gravada e, portanto, pode ser referenciada como endereço gravado ou Burned-In address (BIA).
Outra forma de se referir a ele é como endereço de hardware Ethernet ou Ethernet Hardware Address (EHA).
Endereço físico na rede, é uma outra forma de se referir ao endereço MAC.

Os endereços MAC são formados ou criados a partir das regras do IEEE: MAC-48, EUI-48, e EUI-64.
No Linux, você pode olhar o seu endereço de hardware no painel de configuração da rede.
Mas a maneira mais simples de fazer isto é abrir um terminal e executar o comando:

ifconfig -a | grep HW
eth0      Link encap:Ethernet  Endereço de HW 02:6d:5c:e8:8d:b2  
wlan0     Link encap:Ethernet  Endereço de HW 00:23:24:00:b5:2b 

O ifconfig pode ser usado para alterar temporariamente o endereço físico de uma interface de hardware — leia este artigo, para entender melhor o procedimento.
Switch com luzes acesas, mostrando atividade.

Como alterar permanentemente o endereço de hardware MAC de uma interface

Alterar temporariamente o endereço físico do seu computador ou smartphone pode ser útil em muitos casos — navegar anonimamente em uma rede em que as interfaces são monitoradas pelos seus endereços de hardware, por exemplo.
Procure saber se a prática é permitida, antes de adotá-la. Algumas instituições têm regras restritivas quanto a isto e prevem, até mesmo, punições.
Ao contrário da alteração temporária, a permanente não será desfeita com o reboot do sistema.
Para realizar esta mudança, é necessário editar o arquivo de configuração /etc/network/interfaces, na sessão Network interfaces em que se encontra a diretiva hwaddress:

cat /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# Network interfaces
allow-hotplug eth0
iface eth0 inet dhcp
  hwaddress ether 08:00:00:00:00:01

Se esta sessão não existir, você a pode adicionar ao seu arquivo de configuração.
Altere a linha hwaddress ... com os seus novos valores.
Grave o arquivo e reinicie o seu computador.
Este artigo é baseado em uma máquina rodando o Trisquel Linux — que é baseado no Debian. Portanto os usuários do Ubuntu, Linux Mint etc. devem encontrar uma configuração quase idêntica.
Se você tiver problemas ou se deparar com alguma mensagem de erro, recomendo a leitura do artigo como alterar o endereço MAC de uma interface de rede.

Referências

Wikipedia – MAC Address (english): http://en.wikipedia.org/wiki/MAC_address.
Como encontrar o endereço de hardware MAC de uma interface, em vários sistemas operacionais (english): http://www.materials.ucsb.edu/howto_mac_address.php.
Blog Sleeplessbeastie: https://blog.sleeplessbeastie.eu/2013/01/11/how-to-change-the-mac-address-of-an-ethernet-interface/

Como alterar o endereço MAC de uma interface de rede

O objetivo deste texto é mostrar como alterar o endereço de hardware MAC de uma interface de rede ethernet ou WLAN através de alguns exemplos.
Há alguns casos em que esta alteração pode ser útil. Ao final do artigo, vou abordar alguns erros que podem decorrer desta operação e como resolvê-los.
Se você está interessado em alterar o endereço de um dispositivo Android, leia também este artigo.
land-trees

Em que casos devemos alterar o endereço MAC da nossa interface de rede?

Raramente é necessário fazer a alteração do endereço MAC da sua interface de conexão à rede.
Se você não sabe o que está fazendo, é recomendável não seguir em frente — o seu sistema pode ficar sem acesso à rede, o que irá dificultar a encontrar uma forma de desfazer as coisas.
Diferente dos endereços IP, não há a menor necessidade de um endereçamento de hardware refletir a topologia da rede — ou seja, qualquer que seja o endereço que você tenha aí, ele será o suficiente para fazer a conexão.
Outras soluções devem sempre ser consideradas, antes desta, caso você não esteja conseguindo se conectar.
Por outro lado, há algumas circunstâncias que requerem o uso de endereços específicos ou escolhidos aleatoriamente:

  1. Fazer uso de um serviço que tenha sido bloqueado para um determinado endereço de hardware.
  2. Participar de um esquema de balanceamento de carga ou failover que requeira o uso do mesmo endereço MAC em múltiplas interfaces.
  3. Fazer uso anônimo de uma rede em que os endereços MAC estejam sob monitoramento.

Antes de prosseguir, tenha em mente que a possibilidade de trocar o endereço de hardware MAC de uma interface de rede depende de ela ter suporte a este recurso, através de drivers — o que é o caso da maioria.

Como alterar o endereço MAC com um método não persistente

O método descrito neste tópico é não persistente, ou seja, a alteração será desfeita ao reiniciar seu sistema.
Vamos supor a configuração da interface eth0 no seu sistema para passar a usar o endereço 02:5d:6c:e8:8d:b2
No Linux (e no Android), você pode usar o comando ifconfig para verificar e alterar o seu endereço de hardware.
No caso do Android, será necessário ter um aparelho rooteado para poder usar o ifconfig. Leia mais sobre como alterar o endereço MAC no Android, para obter informações mais específicas para esta plataforma.
Para verificar o endereço MAC das suas interfaces de rede, use o ifconfig:


ifconfig

ou combine-o com o comando grep.


ifconfig | grep HW

eth0      Link encap:Ethernet  Endereço de HW b0:b7:c3:04:da:48  
wlan0     Link encap:Ethernet  Endereço de HW 04:85:08:a5:0a:aa

Note que a lista contém 2 interfaces de redes, que podem ser configuradas: ‘eth0’ e ‘wlan0’ — a primeira é a rede com fio (a cabo) e a segunda a rede sem fio (WiFi)..
O comando ifconfig pode ser invocado, também, para alterar o endereço de hardware MAC de uma interface. Escolha a que será alterada e execute o seguinte:


sudo ifconfig eth0 hw ether 02:5d:6c:e8:8d:b2

Só para lembrar, se algo der errado, você pode reiniciar o seu computador neste momento, para desfazer as alterações.
Se, ao invés de clonar ou copiar um endereço MAC já existente, você quiser criar um novo, faz bem saber que dois dos bits constantes da string do endereço de hardware têm significados especiais:

  • O bit mais insignificante, do primeiro byte, é ajustado para zero quando se tratar de endereços unicast ou um para quando se tratar de endereços multicast.
  • O segundo bit é ajustado para zero para endereços globais únicos (que tipicamente seriam atribuídos por fabricantes dispositivos conectáveis) ou um para endereços administráveis localmente.

Um endereço multicast é um identificador lógico para um grupo de hosts em uma rede de computadores.
Endereçamento multicast pode ser usado por várias camadas de links (Link Layers): Ehternet multicast, Internet layer para IPv4 ou IPv6.
A transmissão unicast é o processo de enviar mensagens a uma única rede, identificada por um único endereço.
(Wikipedia).

No caso de um endereço unicast administrado localmente estes bits deveriam ser ajustados para zero e um, respectivamente. Além disto, o primeiro byte de um endereço deveria terminar com um 2, 6, A ou E, quando expresso em notação hexadecimal.
network-switches

Como testar a configuração

Você pode verificar a sua nova configuração com o próprio comando ifconfig, em relação à interface que você alterou — ‘eth0’ ou ‘wlan0’:


ifconfig eth0
eth0      Link encap:Ethernet  Endereço de HW 02:5d:6c:e8:8d:b2  
          UP BROADCAST MULTICAST  MTU:1500  Métrica:1
          pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:0 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000 
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Veja como o resultado sai na primeira linha, após o título “Endereço de HW”.

Como inspecionar o tráfego de entrada e de saída

Você pode checar se a interface recém configurada está usando o endereço MAC que deveria, gerando algum tráfego de entrada/saída através dela.
Experimente o tcpdump:


tcpdump -i eth0 -e -n "icmp and host 192.168.0.1"

O comando acima, faz o seguinte:

  • -i eth0 — especifica o nome da interface a ser testada.
  • -e — habilita a exibição de cabeçalhos link-layer.
  • -n "icmp and host 192.168.0.1" — opção para exibir o endereço “numérico” do endereço.

O filtro restringe a exibição do tráfego ICMP que tenha sido endereçada “a partir da” ou “para a” máquina local.
Agora, gere algum tráfego ICMP, usando o comando ping.


ping 192.168.0.1

Não se esqueça de adequar os valores usados nos meus exemplos à sua realidade.
Há várias outras formas de inspecionar se sua interface funciona adequadamente ou não. Se você consegue navegar na Internet ou enxergar outros dispositivos na rede, obviamente ela está.

Possíveis erros ao alterar o endereço de hardware MAC de uma interface de rede

Não vou cobrir todos os possíveis erros, mas apenas os mais comuns com os quais você pode se deparar ao fazer esta alteração.

Operation not supported

O erro : Operation not supported pode indicar que o endereço de hardware não pode ser alterado para aquela interface específica.
Isto pode ocorrer em função de a interface não ter um endereço de hardware ou porque o recurso de troca de endereço não foi implementado no driver do dispositvo, conforme já comentamos.
Uma outra possibilidade (muito comum) é que você simplesmente não tenha permissão suficiente para realizar a operação. Você precisa ter privilégios administrativos para realizar esta alteração.

Cannot assign requested address

O erro SIOCSIFHWADDR: Cannot assign requested address provavelmente indica que o endereço de hardware MAC requisitado não é um endereço unicast. Para ser qualificado como endereço unicast o primeiro byte precisa ser par.

Device or resource busy

O erro SIOCSIFHWADDR: Device or resource busy – you may need to down the interface provavelmente indica que o driver do dispositivo não permite mudanças no endereço MAC enquanto a interface estiver ativa ‘up’.
Você pode desligar a interface com o ifconfig:


sudo ifconfig eth0 down

Referências

Para obter informações específicas sobre como alterar o endereço MAC em dispositivos Android, leia o artigo: como alterar o endereço MAC no Android
Wikipedia: http://pt.wikipedia.org/wiki/Unicast
MicroHowTo: http://www.microhowto.info/howto/change_the_mac_address_of_an_ethernet_interface.html