Tutorial: Cambiando la MAC: linux && Windows
Todo NIC (Network Interface Controller) posee un identificador de 48 bits al que normalmente nos referimos como MAC. Dicho identificador es asignado por el fabricante de la tarjeta, y teoricamente es “único” para cada NIC, y . Dichos 48 bits se suelen representan en hexadecimal (16 grupos de 4 bits).
Como dato interesante, antes de poder asignar una MAC, los productores de Interfaces de red han de acordar (pagando una licencia) con el IEEE el rango de MACs en el que pueden trabajar. Gracias a esta jerarquía, analizando parte de la MAC podemos averiguar quien es el fabricante.
Normalmente el id del fabricante son los primeros 24 bits. Imaginemos que tu MAC es AA-AA-AA-BB-BB-BB, “AA-AA-AA” seria el código de fabricante y “BB-BB-BB” el numero asignado por dicho fabricante. Es por esto que muchas aplicaciones son capaces de “averiguar” el fabricante de la tarjeta (Compaq, intell, etc).
Ver MAC en Windows:
Windows trata a dicha dirección como “Physical Address” o dirección física. Para verla basta con que teclees en la consola del sistema “ipconfig /all”.
> ipconfig /all
Ethernet adapter Local Area Connection:
Sufijo de conexión específica DNS . :
Descripción . . . . . . . . . . . . . . . . . . . . : Broadcom NetXtreme Gigabit Ethernet
Dirección física. . . . . . . . . . . . . : 00-E0-7E-11-22-33
DHCP habilitado. . . . . . . . . . . . . . . . : No
Dirección IP. . . . . . . . . . . . . . . . . . . . : 192.168.1.10
Máscara de subred. . . . . . . . . . . . . . : 255.255.0.0
Puerta de enlace predeterminada . : 192.168.1.1
Servidores DNS. . . . . . . . . . . . . . . . . :
Ver MAC en Linux:
Linux por otro lado la llama “Haddr”, Hardware address. Para verla basta con pulsar “sudo ifconfig” o en la terminal.
#sudo ifconfig
eth0 Link encap:Ethernet HWaddr 00:0B:DB:C6:2E:5C
inet addr:150.203.233.126 Bcast:150.203.233.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7002 errors:0 dropped:0 overruns:0 frame:0
TX packets:749 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:1861755 (1.7 MiB) TX bytes:141647 (138.3 KiB)
Base address:0xdf40 Memory:feae0000-feb00000
“universally administered address” vs “locally administered address”
Entonces…, es posible o no cambiar dicho identificador?. En linux Si. En windows normalmente tambien, aunque depende de los drivers.
Hasta ahora implicitamente nos estabamos refiriendo a la “universally administered address”. Dicho código esta grabado “Hard Coded” en la tarjeta y como proras imaginar NO se puede modificar. Sin embargo, con el fin de dar cierta flexibilidad a los administradores de redes se decidió crear la llamada “locally administered address“ la cual se mantiene via software, y SI que la podemos personalizar.
En el momento que asignemos algún valor a la segunda, la tarjeta comenzará a usar dicho valor. Este truco es muy útil para evitar filtros de MAC o suplantar otros equipos.
Cambiar la MAC en Windows:
Inicio -> Panel del Control -> Conexiones de red -> Conexión de red local -> (botón derecho) propiedades:
-> Configuracion -> (Pestana)Avanzado:
-> Selecciona “Locally Administered Address” e introduce la nueva MAC -> Aceptar -> Aceptar.
Cambiar la MAC en Linux:
# sudo ifconfig eth0 hw ether AA:AA:AA:BB:BB:BB
Opciones:
eth0 -> Interfaz de la tarjeta que quieras cambiar.
AA:AA:AA:BB:BB:BB -> Nueva MAC.
Por ultimo, Aquí os dejo una lista (gracias a ettercap) bastante completa de los rangos asignados a los diferentes productores de tarjetas.


Sólo quería hacer una corrección. Para ver la MAC en Linux no hace falta usar el sudo (comando usado para tener permisos administrativos: “Super User DO”), sino que basta con ejecutar /sbin/ifconfig, ya que sólo necesitas permisos de administración para modificar la configuración de las interfaces de red, pero no para consultarlas.
Además, si has usado sudo al principio para no presuponer que estas ya como usuario root, deberías seguir con la misma suposición en el resto de la explicación, por lo que modificar la MAC sería “sudo /sbin/ifconfig eth0 hw ether AA:AA:AA:BB:BB:BB”
Gracias por el comentario Ed.
Tienes razon, como bien dices en el ultimo punto me faltaba el “sudo”, ya esta arreglado.
El motivo por el que uso el comando sudo para invocar a ifconfig es como bien dices porque es posible que el usuario no tenga los privilegios necesarios, en tal caso “# /sbin/ifconfig” serviria para acceder a los datos, pero no para modificarlos.
Por alguna razón que desconozco, a veces en Linux se debe de tener la interface de red detenida para cambiar la MAC, o de lo contrario tendríamos el siguiente error:
[root@localhost ~]# ifconfig eth0 hw ether 01:02:03:04:05:06
SIOCSIFHWADDR: Dispositivo o recurso ocupado
Entonces, para cambiar la dirección MAC de la tarjeta, habría que detener el interface, y a continuación volverlo a levantar:
[root@localhost ~]# ifconfig eth0 down hw ether 01:02:03:04:05:06
[root@localhost ~]# ifconfig eth0 up
[root@localhost ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 01:02:03:04:05:06
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:21 Base address:0xd400
mmm llegue tarde, ya que me disponia a decir lo que bien dijo Jotape hace unas horas atras :^P
como siempre muy buen material por aqui, cortito y al pie sin preambulos cuando no son necesario
Muy buen artículo.
Solo un fallo, jerarquía es con j.
Ciao.
Corregido. Gracias kikeny!
Una recomendación: usad el comando ip en vez de ifconfig que esta desfasado.
Un saludo!
mira nose si es problema de mi linux o ke pero me lanza ke es un argumento invalido
root@localhost:/home/perrow# ifconfig eth0 hw ether 01:02:03:04:05:06
SIOCSIFHWADDR: Argumento inválido
hice algo mal ?
prueba con una mac valida, los seis primeros dijitos son el fabricante, prueba solo cambiando los seis ultimos
Un Saludo
[quote]mira nose si es problema de mi linux o ke pero me lanza ke es un argumento invalido
root@localhost:/home/perrow# ifconfig eth0 hw ether 01:02:03:04:05:06
SIOCSIFHWADDR: Argumento inválido
hice algo mal ? [/quote]
Si, las mac parten SIEMPRE con 00